从C#3.0(.net framework3.5)开 始,支持了Lambda表达式。所谓Lambda表达式就是delegate和匿名方法的简写形式,Lambda表达式的语法如下:
(param1, param2 ...,paramN) =>
{
表达式1;
表达式2;
return 返回值;
}
上面语法中的param1...paramN就表示方法的参数(不用确定类型,C#编译器会为我们做这个工作),而{...}里面的内容就和方法体中的内容完全一样。
如果delegate没有参数,可以只写(),如下面的方法所示:public delegate void Method1();
public void test()
{
Method1 method1 = () => { int i = 4; i += 6; };
}
public void test()
{
Method1 method1 = () => { int i = 4; i += 6; };
}
如果delegate只有一个参数,参数两边的括号可以不写,代码如下:
public delegate void Method2(int i);
public void test()
{
Method2 method2 = i => { i++; i += 6; };
}
public void test()
{
Method2 method2 = i => { i++; i += 6; };
}
如果delegate有返回值,{...}中 的最后一条语句需要使用return来返回相应的值,代码如下:
public delegate int Method3(int x, int y);
public void test()
{
Method3 method3 = (x, y) => { x++; y++; return x + y; };
}
public void test()
{
Method3 method3 = (x, y) => { x++; y++; return x + y; };
}