2014-02-15

[C#] delegate 到 Lambda Expressions 語法演進

一開始要看懂 Lambda Expressions 有點困難,下面會以演進方式來介紹如何做到語法省略。

首先定義一個單參數的 delegate
delegate int Del(int x);

以傳統 delegate 的語法來建構 delegate
Del a = delegate(int x) { return x + 2; };

去掉 delegate 改成 Lambda 表示式
Del a = (int x) => { return x + 2; };

由於大括號裡只有一句陳述式,而且是一個 return 的陳述式,所以可以省略大括號跟 return
Del a = (int x) => x + 2;

在 delegate 已經有定義輸入參數的型別,所以在小括號裡的型別可以省略
Del a = (x) => x + 2;

由於小括號裡面只有一個輸入參數,所以可以再進一步省略小括號
Del a = x => x + 2;

參考來源:
Lambda 運算式 (C# 程式設計手冊)

0 回應: