C#中的Lambda表达式是什么?

Lambda表达式是表示匿名方法的更好方法。匿名方法和Lambda表达式都允许您内联定义方法实现,但是,匿名方法明确要求您定义方法的参数类型和返回类型。

以表达式为主体的表达式lambda :(输入参数)=> expression

以语句块为主体的语句lambda:(input-parameters)=> {<statement-of-statements>}

任何lambda表达式都可以转换为委托类型。可以将lambda表达式转换为的委托类型由其参数和返回值的类型定义。如果lambda表达式不返回值,则可以将其转换为Action委托类型之一;否则,可以将其转换为Func委托类型之一。

static void Main(string[] args){
   Func<int, int> square = x => x * x;
   Console.WriteLine(square(5));
   Console.ReadLine();
}

在=>运算符右侧具有表达式的lambda表达式称为表达式lambda。表达式lambda返回表达式的结果,并采用以下基本形式

动作行=()=> Console.WriteLine();

Func <double,double> cube = x => x * x * x;

Func <int,int,bool> testForEquality =(x,y)=> x == y;

Func <int,string,bool> isTooLong =(int x,string s)=> s.Length> x;

C#7.0,C#语言提供了对元组的内置支持。您可以提供一个元组作为lambda表达式的参数,并且您的lambda表达式也可以返回一个元组。

在lambda表达式中引入的变量在封闭方法中不可见。

Lambda表达式无法直接从封闭方法中捕获in,ref或out参数。

lambda表达式中的return语句不会导致封闭方法返回。

如果该lambda表达式的目标不在lambda表达式块之外,则该lambda表达式不能包含goto,break或Continue语句。如果目标位于lambda表达式块之外,则在其内部有跳转语句也是错误的。