C# 匿名方法和Lambda表达式

2020-11-11 14:56发布

匿名方法(Anonymous methods)


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

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


 static int Test1(int arg1,int arg2)

 {

     return arg1 + arg2;

 }

 static void Main(string[] args)

 {

  // Func<int, int, int> plus = Test1;//这是正常使用委托的方式

 

  //使用匿名方法的形式

Func<int, int, int> plus = delegate (int arg1, int arg2)

  {

       return arg1 + arg2;

  };

}



匿名方法即没有名字的方法,关键字是 delegate

匿名方法只能将方法赋值给委托,通过委托调用该方法

匿名方法本质上是一个方法,只是没有名字,任何使用委托变量的地方都可以使用匿名方法

赋值


Lambda 表达式

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


 static void Main(string[] args)

 {

 // Func<int, int, int> plus = Test1;//这是正常使用委托的方式

 Func<int, int, int> plus = ( arg1,arg2)=>//换成Lambda表达式形式

     {

         return arg1 + arg2;

     };

     Console.WriteLine(plus(12, 45));

     Console.ReadKey();

}

Lambda 表达式是不需要声明类型的:

如果 Lambda 表达式只有一条语句,在方法体中就不需要大括号和 return 语句,编译器

会自动添加 return 语句。 如果 Lambda 表达式的实现代码中需要多条语句,就必须添加大括号和 return 语句


 static void Main(string[] args)

 {

     Func<int, int> test2 = a => a+1;//简写形式

     Func<int, int> test3 = (a) =>//普通形式

     {

         return a + 1;

     };

     Console.WriteLine(test2(22));

     Console.ReadKey();

 }

Lamdba表达式的几种形式:





作者:Czhenya

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

来源:CSDN
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。