代码:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 委托_例子 8 { 9 static class Program 10 { 11 // 定义委托(Double类型) 12 delegate double Integand(double x); 13 14 //定义方法 15 static double Method1(double x) 16 { 17 return 2 * x + 1; 18 } 19 20 static double Method2(double x) 21 { 22 return x * x; 23 } 24 25 // 定义是用委托的方法 26 static double DefiniteIntegrate(Integand f, double a, double b) 27 { 28 const int sect = 1000; 29 30 double area = 0; 31 32 double delta = (b - a) / sect; 33 34 for (int i = 0; i < sect; i++) 35 { 36 //此处的 f 就代表 Method1 或是 Method2。 37 //传给他们一个double类型的值,返回一个double类型的值。 38 //此时的double值就是长乘以宽“a + i * delta” 39 area += delta * f(a + i * delta); 40 } 41 42 return area; 43 } 44 45 //利用【匿名方法】,可以直接把代码块定义为委托,而不需要事先定义方法。 46 //不光可以使用代码块定义变量,而且可以使用代码块外面的变量,即主方法中的变量。 47 static void Main(string[] args) 48 { 49 int a = 1; 50 51 int b = 5; 52 53 Integand i = delegate(double x) 54 { 55 return a * x + b; 56 }; //添加分号 57 58 double result = DefiniteIntegrate(i, a, b); 59 60 Console.WriteLine("result:{0}", result); 61 62 Console.ReadKey(); 63 } 64 } 65 }