/* C# 委託的發展史: .Net 1.x 委託 =>.Net 2.x 匿名方法 => .Net 3.0/3.5 Lambda 運算式 ms-help://MS.MSDNQTR.v90.chs/dv_csref/html/6ce3f04d-0c71-4728-9127-634c7e9a8365.htm 在 C# 1.0 中,您通過使用在代碼中其他位置定義的方法顯式初始化委託來建立委託的執行個體。 C# 2.0 引入了匿名方法的概念,作為一種編寫可在委託調用中執行的未命名內聯語句塊的方式。 C# 3.0 引入了 Lambda 運算式,這種運算式與匿名方法的概念類似,但更具表現力並且更簡練。 這兩個功能統稱為“匿名函數”。通常,針對 .NET Framework 版本 3.5 及更高版本的應用程式應使用 Lambda 運算式。 下面的樣本示範了從 C# 1.0 到 C# 3.0 委託建立過程的發展:*/namespace Microshaoft{ using System; class Test { //c# 1.0 delegate void TestDelegate(string s); static void M(string s) { Console.WriteLine(s); } static void Main(string[] args) { // Original delegate syntax required // initialization with a named method. TestDelegate testdelA = new TestDelegate(M); // C# 2.0: A delegate can be initialized with // inline code, called an "anonymous method." This // method takes a string as an input parameter. TestDelegate testDelB = delegate ( string s //參數 ) //匿名函數 { Console.WriteLine(s); }; // C# 3.0. A delegate can be initialized with // a lambda expression. The lambda also takes a string // as an input parameter (x). The type of x is inferred by the compiler. TestDelegate testDelC = (x) //參數 => //匿名函數 { Console.WriteLine(x); }; // Invoke the delegates. testdelA("Hello. My name is M and I write lines."); testDelB("That's nothing. I'm anonymous and "); testDelC("I'm a famous author."); // Keep console window open in debug mode. Console.WriteLine("Press any key to exit."); Console.ReadKey(); } } /* Output: Hello. My name is M and I write lines. That's nothing. I'm anonymous and I'm a famous author. Press any key to exit. */}