C#中的委托类型使用 using System; namespace Wrox.ProCSharp.AdvancedCSharp { delegate double DoubleOp(double x);//声明一个委托类型. class MainEntryPoint { /// <summary> /// 程序入口. /// </summary> static void Main() { //声明一个委托链. DoubleOp [] operations = { //方法链中的参数传递一个返回相同类型值的函数名称 new DoubleOp(MathsOperations.MultiplyByTwo), new DoubleOp(MathsOperations.Square) }; //使用两种方法进行计算. for (int i=0 ; i<operations.Length ; i++) { Console.WriteLine("Using operations[{0}]:", i); ProcessAndDisplayNumber(operations[i], 2.0); ProcessAndDisplayNumber(operations[i], 7.94); ProcessAndDisplayNumber(operations[i], 1.414); Console.WriteLine(); } } //打印出计算前以及计算后的结果 static void ProcessAndDisplayNumber(DoubleOp action, double value) { double result = action(value); Console.WriteLine("Value is {0}, result of operation is {1}", value, result); } } //这个类只可以在这个页面使用,里面使用静态方法. class MathsOperations { public static double MultiplyByTwo(double value) { return value*2; } public static double Square(double value) { return value*value; } } }