C# - 委托_ 匿名方法

代码:

 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 }

 

posted on 2015-05-24 16:05  ultrastrong  阅读(229)  评论(0编辑  收藏  举报