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