匿名函數是一個“內聯”語句或表達式,可在需要委托類型的任何地方使用。 可以使用匿名函數來初始化命名委托,或傳遞命名委托(而不是命名委托類型)作為方法參數。
C# 中委托的發展
C# 1.0 中,您通過使用在代碼中其他位置定義的方法顯式初始化委托來創建委托的實例。
C# 2.0 引入了匿名方法的概念,作為一種編寫可在委托調用中執行的未命名內聯語句塊的方式。
C# 3.0 引入了 Lambda 表達式,這種表達式與匿名方法的概念類似,但更具表現力並且更簡練。
這兩個功能統稱為“匿名函數”。 通常,針對 .NET Framework 版本 3.5 及更高版本的應用程序應使用 Lambda 表達式。
下面的示例演示了從 C# 1.0 到 C# 3.0 委托創建過程的發展:
class Test { delegate void TestDelegate(string s); static void M(string s) { Console.WriteLine(s); } static void Main(string[] args) { //形式1 TestDelegate testDelA = new TestDelegate(M); //形式2 TestDelegate testDelB = delegate(string s) { Console.WriteLine(s); }; //形式3 TestDelegate testDelC = (x) => { Console.WriteLine(x); }; testDelA("Hello. My name is M and I write lines."); testDelB("That's nothing. I'm anonymous and "); testDelC("I'm a famous author."); Console.WriteLine("Press any key to exit."); Console.ReadKey(); } }