Делегаты

Последнее обновление: 10.10.2018
Вопрос 1

Есть следующий делегат:

delegate int Operation (int val);

Какие из следующих методов соответствуют данному делегату:

static void Method1(int x)
{
	Console.WriteLine(x * x);
}
static int Method2(ref int x)
{
	return x * x;
}
static int Method3(int x, int y)
{
	return x * y;
}
static int Method4(int x, int y = 7)
{
	return x * y;
}
static int Method5(out int x)
{
	x = 7;
	return x * x;
}

Ни один из предложенных методов не соответствует делегату Operation.

Вопрос 2

Что будет выведено на консоль в результате выполнения следующей программы:

class Program
{
	delegate int Operation(int x, int y);

	static void Main(string[] args)
	{
		Operation del = Add;
		del += Multiply;

		int result = del(6, 5);
		Console.WriteLine(result);
		Console.Read();
	}
	private static int Add(int x, int y) { return x + y; }
	private static int Multiply(int x, int y) { return x * y; }
}

На консоль будет выведено число 30 - результат последнего метода, добавленного в список методов делегата.

Вопрос 3

Какой будет консольный вывод при выполнении следующей программы:

class Program
{
	delegate void Message();

	static void Main(string[] args)
	{
		Message mes1 = Hello;
		mes1 += HowAreYou;
		mes1 += Hello;
		mes1 += Hello;
		mes1 -= Hello;
		mes1();
		
		Console.Read();
	}
	private static void Hello() { Console.WriteLine("Hello"); }
	private static void HowAreYou() { Console.WriteLine("How are you?"); }
}

Консольный вывод данной прогаммы:

Hello
How are you?
Hello
Вопрос 4

Что будет выведено на консоль в результате выполнения следующей программы:

class Program
{
	delegate void Message();

	static void Main(string[] args)
	{
		Message mes = new Message(Hello);
		mes += Hi;
		mes -= Hello;
		mes -= Hi;
		mes();
		Console.Read();
	}
	private static void Hello() { Console.WriteLine("Hello"); }
	private static void Hi() { Console.WriteLine("Hi"); }
}

При выполнении прогаммы, точнее при выполнении делегата возникнет исключение, поскольку список вызова делегата пуст.

Дополнительные материалы
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850