C#匿名函数之匿名方法与lambda表达式

匿名函数是一个“内联”语句或表达式,可在需要委托类型的任何地方使用。 可以使用匿名函数来初始化命名委托,或传递命名委托(而不是命名委托类型)作为方法参数。

共有两种匿名函数:

.匿名方法

.lambda表达式


下面示例如何使用:

public class Test{
	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);
	}
}

result ,result2 , result3的结果都为16;


匿名方法:

例:

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



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值