C#匿名方法
我們討論了委托用於引用具有相同簽名的委托的任何方法。換句話說,你可以調用,可以通過使用委托對象的委托引用的方法。
匿名方法提供了一種技術,通過一個代碼塊作為委托參數。匿名方法基本上都是冇有名字,隻是方法體。
不必指定一個匿名方法的返回類型;它是從方法體內的return語句來推斷。
編寫一個匿名方法的語法
匿名方法與創建委托實例,帶有delegate關鍵字聲明。例如,
delegate void NumberChanger(int n); ... NumberChanger nc = delegate(int x) { Console.WriteLine("Anonymous Method: {0}", x); };
代碼塊 Console.WriteLine("Anonymous Method: {0}", x); 是匿名方法的主體。
委托既能與匿名方法以及以同樣的方式命名的方法,也就是被調用,通過將方法參數的委托對象。
示例,
nc(10);
例子:
下麵的例子演示了這一概念:
using System; delegate void NumberChanger(int n); namespace DelegateAppl { class TestDelegate { static int num = 10; public static void AddNum(int p) { num += p; Console.WriteLine("Named Method: {0}", num); } public static void MultNum(int q) { num *= q; Console.WriteLine("Named Method: {0}", num); } public static int getNum() { return num; } static void Main(string[] args) { //create delegate instances using anonymous method NumberChanger nc = delegate(int x) { Console.WriteLine("Anonymous Method: {0}", x); }; //calling the delegate using the anonymous method nc(10); //instantiating the delegate using the named methods nc = new NumberChanger(AddNum); //calling the delegate using the named methods nc(5); //instantiating the delegate using another named methods nc = new NumberChanger(MultNum); //calling the delegate using the named methods nc(2); Console.ReadKey(); } } }
讓我們編譯和運行上麵的程序,這將產生以下結果:
Anonymous Method: 10 Named Method: 15 Named Method: 30