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