上一篇中 C# 委派(Delegate) (一) 介紹了Delegate類基本觀念、宣告方式與使用方式,本篇將照著C#中委派的發展史中,繼續介紹 Anonymous Function、Lambda Expression。 Anonymous Function 還記得上篇的範例中,我們每宣告一個委派( delegate )的變數( variable )就要寫一個跟委派相同簽章的 具名 方法對應是吧? 但是這個專用來給委派變數宣告用 具名 方法, 具名 不是顯得很多餘嗎,我們似乎不太需要知道這個方法叫什麼名字啊。 public delegate int MyDelegate(int x); static void Main(string[] args) { //AddOne是專門寫來給委派變數使用的方法,這個具名方法只用一次,從此以後AddOne沒在被用過。 MyDelegate mydelegate = new MyDelegate(AddOne); } public static int AddOne(int number) { return ++number; } 所以在C#2.0中貼心的微軟發展了一套專門給委派變數宣告專用的語法糖( Syntactic sugar )叫做匿名方法( Anonymous Function )。 public delegate int MyDelegate(int x); static void Main(string[] args) { //不需要再寫一個AddOne方法 MyDelegate mydelegate = delegate (int number) { return number + 1; }; } 所以在C#2.0中只要如上宣告就完成了委派變數的宣告。匿名方法的變數宣告中,左式必須要使用明確的委派類別來宣告(這邊使用 MyDelegate ),不能使用 var 關鍵字,如果堅持要使用var關