匿名方法详解

为什么要使用匿名方法

 在实例化委托时,有时候需要的匹配方法只是临时使用,这时候就没必要创建独立的具名方法,使用匿名方法将会使代码变得更简单。

匿名方法的定义及注意事项

 匿名方法是实例化委托时内联声明的方法,通常的使用环境有:声明委托变量时作为初始化表达式、组合委托时在赋值表达式的右边、为委托增加事件时在赋值表达式的右边。它由delegate关键字、参数列表和语句块组成,如下:
delegate (Paramters) {ImplementionCode}
在使用匿名方法时需要注意以下事项:

返回类型

 匿名方法不会显式声明返回值,而是在实体代码中通过return语句返回与委托声明相同的返回类型,如果委托的返回类型是void类型,则不返回。

参数

 匿名方法的参数需要与委托的参数相匹配,包括参数数量、参数类型及位置。如果委托的参数列表没有参数且不包含out参数,则可省略匿名方法的参数列表或使用一个空括号替代。

params参数

 如果委托声明的参数列表包含了params参数,那么匿名方法的参数列表将忽略params关键字。

变量和参数的作用域

 一般来说,参数与变量的作用域是限制在实现代码的主体之内的,但在某些特殊情况下,匿名方法可以访问外围作用域的局部变量和环境,使用外部变量的这一过程称为被方法捕获。,也就是说,只要捕获方法是委托的一部分,即使变量已经离开了作用域,捕获的外部变量也会一直有效。如下代码示例:

delegate void MyDelegate();
static void Main()
{
	MyDelegate  del;
	{
		int x=5;
		del=delegate{ Console.WriteLine($"value of x is {x}.");};
	}
	Console.WriteLine($"value of x is {x}");//报错
	del;//成功,因为del委托中的匿名方法在它的环境中保留了x
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值