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");