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表达式块之外,则在其内部有跳转语句也是错误的。