C# 匿名方法和Lambda表达式

举报
陈言必行 发表于 2021/08/14 00:13:13 2021/08/14
【摘要】 匿名方法(Anonymous methods) 匿名方法 :提供了一种传递代码块作为委托参数的技术。匿名方法是没有名称只有主体的方法。 在匿名方法中不需要指定返回值类型,系统会在主体内的 return 语句推断。 static int Test1(int arg1,int arg2) { return arg1 + arg2; } static void ...
匿名方法(Anonymous methods)

匿名方法 :提供了一种传递代码块作为委托参数的技术。匿名方法是没有名称只有主体的方法。

在匿名方法中不需要指定返回值类型,系统会在主体内的 return 语句推断。


  
  1. static int Test1(int arg1,int arg2)
  2. {
  3. return arg1 + arg2;
  4. }
  5. static void Main(string[] args)
  6. {
  7. // Func<int, int, int> plus = Test1;//这是正常使用委托的方式
  8. //使用匿名方法的形式
  9. Func<int, int, int> plus = delegate (int arg1, int arg2)
  10. {
  11. return arg1 + arg2;
  12. };
  13. }


匿名方法即没有名字的方法,关键字是 delegate
匿名方法只能将方法赋值给委托,通过委托调用该方法
匿名方法本质上是一个方法,只是没有名字,任何使用委托变量的地方都可以使用匿名方法
赋值

Lambda 表达式
Lambda 表达式是匿名方法的简写形式 , 用来代替匿名方法


   
  1. static void Main(string[] args)
  2. {
  3. // Func<int, int, int> plus = Test1;//这是正常使用委托的方式
  4. Func<int, int, int> plus = ( arg1,arg2)=>//换成Lambda表达式形式
  5.      {
  6.         return arg1 + arg2;
  7.     };
  8.      Console.WriteLine(plus(12, 45));
  9.     Console.ReadKey();
  10. }
Lambda 表达式是不需要声明类型的:


如果 Lambda 表达式只有一条语句,在方法体中就不需要大括号和 return 语句,编译器
会自动添加 return 语句。 如果 Lambda 表达式的实现代码中需要多条语句,就必须添加大括号和 return 语句


   
  1. static void Main(string[] args)
  2. {
  3.      Func<int, int> test2 = a => a+1;//简写形式
  4.     Func<int, int> test3 = (a) =>//普通形式
  5.      {
  6.         return a + 1;
  7.      };
  8.     Console.WriteLine(test2(22));
  9.     Console.ReadKey();
  10. }
Lamdba表达式的几种形式:


文章来源: czhenya.blog.csdn.net,作者:陈言必行,版权归原作者所有,如需转载,请联系作者。

原文链接:czhenya.blog.csdn.net/article/details/77943561

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。