C#==>匿名方法 匿名方法的【λ(拉姆达)表达式】方式定义

 

C#==>匿名方法

分类: C# 学习总结   1892人阅读  评论(0)  收藏  举报

1,匿名方法

C#为委托提供一种机制,可以为委托定义匿名方法,匿名方法没有名称,编译器会定指定一个名称

匿名方法中不能使用跳转语句跳转到该匿名方法的外部,也不能跳转到该方法的内部。

也不能在匿名方法外部使用的ref和out参数

[c-sharp]  view plain copy
  1. //用匿名方法定义委托  
  2. class Program  
  3. {  
  4.     delegate string MyDelagate(string val);  
  5.   
  6.     static void Main(string[] args)  
  7.     {  
  8.         string str1 = " 匿名方法外部 ";  
  9.   
  10.         //中括号部分定义来了一个方法,没有名称,编译器会定指定一个名称  
  11.         MyDelagate my = delegate(string param)  
  12.         {  
  13.             string str2 = " 匿名方法内部 ";  
  14.             return param + str1 + str2;  
  15.         };  
  16.           
  17.         //调用委托的匿名方法  
  18.         Console.WriteLine(my(" 参数 "));  
  19.   
  20.         //从结果可以看到,匿名方法同样达到了为委托定义方法的效果  
  21.   
  22.         Console.Read();  
  23.     }  
  24. }  

 

2,匿名方法的【λ(拉姆达)表达式】方式定义

 

C#3.0之后匿名方法可以使用λ表达式来进行定义

无论是拉姆达(lambda)表达式(事实上应该叫匿名函数)或是匿名类,都能归属到一种叫闭包的东西上面。

 

λ运算符 =>

左边是参数,使用括号表达 (string param),可以是 (param)这样不定义类型,编译器会推断出来,只有一个参数的时候可以不使用括号

右边是实现代码,使用花括号,如果代码只有一行,则不使用花括号和return关键字也可以,编译器会为我们添加

这是λ表达式的简单实现

string str1 = " 匿名方法外部 ";
string str2 = " 匿名方法内部 ";

MyDelagate my = param => param + str1 + str2;

Console.WriteLine(my(" 参数 "));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值