筆記 C# 從 Delegate 到 Func & Action 的出現,到最後的 Lambda 對於語法使用上帶來什麼樣的差異。

說明
- Delegate
- C# 1.0 就存在的元老,將方法作為參數傳遞的型別,定義方法的簽名和回傳值型別,可以用來實現事件處理機制。
- Func
- C# 3.0 出現,泛型 Delegate,可以表示具有一個或多個輸入參數和回傳值的方法
- Action
- C# 3.0 出現,泛型 Delegate,與 Func 的差別在於無回傳值。
- Lambda Expression
- C# 3.0 出現,簡潔的方法定義方式,可以用於創造匿名方法,並且搭配 Linq 查詢使用。
// 定義 Delegate Type
delegate int CalcDelegate(int a, int b);
// 實作 Add 方法的邏輯
static int Add(int a, int b)
{
return a + b;
}
void Main()
{
int result;
// 使用 Delegate 搭配 Add 方法進行運算
CalcDelegate calc = Add;
result = calc(10, 5);
// 使用 Func 搭配 Add 方法進行運算
Func<int, int, int> calcFunc = Add;
result = calc(10, 5);
// 使用 Lambda Expression 定義 Add 方法
Func<int, int, int> add = (a, b) => a + b;
result = add(10, 5);
}