logo search
CSharp_Prog_Guide

Заметки

Метод, который передается как параметр делегата, должен иметь такую же сигнатуру, как и объявление делегата.

Экземпляр делегата может инкапсулировать статический метод или метод экземпляра.

Хотя делегат может использовать параметр out, с делегатами групповых событий его использование не рекомендуется, так как при этом нельзя определить, какой делегат будет вызван.

Example 1

The following is a simple example of declaring and using a delegate. Notice that both the delegate, Del, and the associated method, MultiplyNumbers, have the same signature

// Declare a delegate

delegate void Del(int i, double j);

class MathClass

{

static void Main()

{

MathClass m = new MathClass();

// Delegate instantiation using "MultiplyNumbers"

Del d = m.MultiplyNumbers;

// Invoke the delegate object.

System.Console.WriteLine("Invoking the delegate using 'MultiplyNumbers':");

for (int i = 1; i <= 5; i++)

{

d(i, 2);

}

}

// Declare the associated method.

void MultiplyNumbers(int m, double n)

{

System.Console.Write(m * n + " ");

}

}

Output

Invoking the delegate using 'MultiplyNumbers':

2 4 6 8 10