C#3.0-Lambda表达式

Lambda表达式是一个匿名方法,他可以包含一个表达式或者语句块,他能够创造委托或表达式树类型。

  
    
1 // Demo -带一个参数的Lambda表达式
2 namespace TestLambda
3 {
4 // 声明一个委托,包含一个int型参数
5 delegate int del( int n);
6
7 public class MyLambda
8 {
9 public int TestMethod( int n)
10 {
11 /// 利用Lambda表达式构造一个委托
12 /// x => x * x 表达式表示一个方法此方法等同于
13 /// public int MethodName(int x)
14 /// {
15 /// return x*x;
16 /// }
17 /// 由此可以看出,=>左边x表示匿名方法的参数,右边 x*x 表示方法体
18 /// 这行代码可以总结为:实例化一个委托,此委托是用计算传入整型参数的平方
19 /// 如果将Lambda表达式改变为一个方法的话,则以下这行代码可以替换
20 /// del myDel=new del(MethodName);
21 del myDel = x => x * x;
22
23 /// 调用委托,实质调用Lambda表达式进行计算
24 int result = myDel(n);
25 return result;
26 }
27
28
29 }
30 class Program
31 {
32 static void Main( string [] args)
33 {
34 MyLambda my = new MyLambda();
35 /// 测试Lambda表达式
36 int result = my.TestMethod( 10 );
37 Console.WriteLine(result);
38 /// 输出结果为:100
39
40 }
41
42 }
43 }
44
45 // Demo2--带两个参数的及不带任何参数的Lambda表达式
46 namespace TestLambda
47 {
48
49 ///
50 /// 声明一个委托,包含两个int型参数
51 ///
52 ///
53 ///
54 ///
55 delegate int del( int n, int m);
56
57 ///
58 /// 不带参数的委托
59 ///
60 ///
61 delegate int delNoPar();
62
63
64
65 public class MyLambda
66 {
67 public int TestMethod( int n, int m)
68 {
69 /// 利用Lambda表达式构造一个委托
70 /// Lambda表达式的参数x,y不需要事先声明,也可以不指明类型,当然也可以指明
71 /// 如:(int x,int y)=>x*y;
72 /// 完整的表达式是:del myDel=(int x,int y)=>x*y;
73
74 del myDel = (x,y) => x * y;
75
76 /// 不带任何参数的Lambda表达式
77 /// 利用()来表示空参
78 /// 这行代码表示:要返回10*5的值
79 delNoPar testDel = () => 10 * 5 ;
80 Console.WriteLine(testDel());
81
82 /// 调用委托,实质调用Lambda表达式进行计算
83 int result = myDel(n,m);
84 return result;
85 }
86
87
88 }
89 class Program
90 {
91 static void Main( string [] args)
92 {
93 MyLambda my = new MyLambda();
94 /// 测试Lambda表达式
95 int result = my.TestMethod( 10 , 3 );
96 Console.WriteLine(result);
97
98 }
99
100 }
101 }

总结:
1.Lambda表达式,是匿名方法的一个替代,但是更加灵活
2.Lambda表达式,可以包含参数,也可以不包含,不包含时要用()表示
3.Lambda表达式参数可以显示指明类型,也可以不指定,由程序自动分析获得参数类型

你可能感兴趣的:(lambda)