Lambda 运算符
Version >= 3.0
=>
运算符与赋值运算符 =
具有相同的优先级,并且是右关联的。
它用于声明 lambda 表达式,并且它广泛用于 LINQ 查询 :
string[] words = { "cherry", "apple", "blueberry" };
int shortestWordLength = words.Min((string w) => w.Length); //5
在 LINQ 扩展或查询中使用时,通常可以跳过对象的类型,因为它是由编译器推断的:
int shortestWordLength = words.Min(w => w.Length); //also compiles with the same result
lambda 运算符的一般形式如下:
(input parameters) => expression
lambda 表达式的参数在 =>
运算符之前指定,而要执行的实际表达式/ statement / block 在运算符的右侧:
// expression
(int x, string s) => s.Length > x
// expression
(int x, int y) => x + y
// statement
(string x) => Console.WriteLine(x)
// block
(string x) => {
x += " says Hello!";
Console.WriteLine(x);
}
此运算符可用于轻松定义委托,而无需编写显式方法:
delegate void TestDelegate(string s);
TestDelegate myDelegate = s => Console.WriteLine(s + " World");
myDelegate("Hello");
代替
void MyMethod(string s)
{
Console.WriteLine(s + " World");
}
delegate void TestDelegate(string s);
TestDelegate myDelegate = MyMethod;
myDelegate("Hello");