C# 中的 Lambda 表示式是什麼?


Lambda 表示式是表示匿名方法的更好方法。匿名方法和 Lambda 表示式都允許您內聯定義方法實現,但是,匿名方法明確要求您為方法定義引數型別和返回型別。

表示式 Lambda,其主體為表示式:(輸入引數) => 表示式

語句 Lambda,其主體為語句塊:(輸入引數) => { <語句序列> }

任何 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 返回表示式的結果,並採用以下基本形式

Action line = () => 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 表示式不能包含 goto、break 或 continue 語句。如果目標在塊內,則從 Lambda 表示式塊外部進行跳轉也是錯誤的。

更新於: 2020年11月5日

463 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.