委托是事件的基础。
通过将委托与命名方法或匿名方法关联,可以实例化委托。
必须使用具有兼容返回类型和输入参数的方法或 lambda 表达式实例化委托。
为了与匿名方法一起使用,委托和与之关联的代码必须一起声明。本节讨论这两种实例化委托的方法。
// Declare delegate -- defines required signature:
delegate double MathAction(double num);
class DelegateTest
{
// Regular method that matches signature:
static double Double(double input)
{
return input * 2;
}
static void Main()
{
// Instantiate delegate with named method:
MathAction ma = Double;
// Invoke delegate ma:
double multByTwo = ma(4.5);
Console.WriteLine(multByTwo);
// Instantiate delegate with anonymous method:
MathAction ma2 = delegate(double input)
{
return input * input;
};
double square = ma2(5);
Console.WriteLine(square);
// Instantiate delegate with lambda expression
MathAction ma3 = s => s * s * s;
double cube = ma3(4.375);
Console.WriteLine(cube);
}
}