委托类型的声明与方法签名相似,委托类型的实例可以理解为函数的引用。 委托是事件的基础?? // 申明一个委托,从申明方式来看更像是Interface里的方法 delegate double MathAction(double num); class DelegateTest { // 定义一个静态方法 static double Double(double input) { return input * 2; } static void Main() { // 实例化这个委托,并把某个函数的引用赋给该实例 MathAction ma = Double; // 然后可以调用该实例所引用的函数了 // 这里,该实例看似是被引用函数的别名 double multByTwo = ma(4.5); Console.WriteLine(multByTwo); // 实例化一个新委托,并且定义一个函数的同时,把引用赋给该实例 // 这种函数没有名字,但能被引用调用 MathAction ma2 = delegate(double input) { return input * input; }; double square = ma2(5); Console.WriteLine(square); // 实例化一个新委托,并且定义一个表达式的同时,把引用赋给该实例 // 这种方式写法虽然简单,但可读性差,建议还是用函数替代。 MathAction ma3 = s => s * s * s; double cube = ma3(4.375); Console.WriteLine(cube); } }