共有两种匿名函数:
.匿名方法
.lambda表达式
下面示例如何使用:
public class Test{result ,result2 , result3的结果都为16;
delegate int Add(int a , int b);
static int MyAdd(int a , int b){
return a + b;
}
static void Main(string[] args){
//普通委托
Add ad = MyAdd;
int result = ad (8, 8);
//匿名方法
Add ad2 =delegate(int a , int b) {
return a + b;
};
int result2 = ad2 (8, 8);
//lambda表达式
Add ad3= (a , b) => {return a + b;};//或 (a , b) => a + b;
int result3 = ad3 (8, 8);
}
}
匿名方法:
例:
delegate int Add(int a , int b);
Add ad = delegate(int a , int b){/*......*/};
delegate void ShowName();
ShowName sn = delegate(){/*...*/};
通过使用匿名方法,由于您不必创建单独的方法,因此减少了实例化委托所需的编码系统开销。
lambda 表达式:
通过使用 lambda 表达式,可以写入可作为参数传递或作为函数调用值返回的本地函数。
表达式位于 => 运算符右侧的 lambda 表达式称为“表达式 lambda”。 表达式 lambda 会返回表达式的结果,并采用以下基本形式:
(input parameters) => expression
仅当 lambda 只有一个输入参数时,括号才是可选的;否则括号是必需的。 括号内的两个或更多输入参数使用逗号加以分隔:
(x, y) => x == y
有时,编译器难以或无法推断输入类型。 如果出现这种情况,你可以按以下示例中所示方式显式指定类型:
(int x, string s) => s.Length > x
() => SomeMethod()
参考:
https://msdn.microsoft.com/zh-cn/library/bb882516.aspx
https://msdn.microsoft.com/zh-cn/library/0yw3tz5k.aspx
https://msdn.microsoft.com/zh-cn/library/bb397687.aspx