使用Action、Func,EventHandler,params關鍵字修飾的參數的匿名委托和Lambda表達式
在.NET在,我們經常使用委托,委托的作用不必多說,在.NET 2.0之前,我們在使用委托之前,得自定義一個委托類型,再使用這個自定義的委托類型定義一個委托字段或變量。.NET 2.0給我們帶來了Action、Func兩個泛型委托,.NET3.0給我們帶來了Lambda,這一切使得委托的定義和使用變得簡單起來。下面的例子中的委托都使用了Lambda表達式。
一.Action系列的泛型委托
Action系列的委托定義的是沒有返回值(返回值為void)的委托。它有多個版本包括沒有輸入參數,1個輸入參數,2個輸入參數,3個輸入參數,4個輸入參數共5個版本這幾個版本的原型如下:
1.沒有輸入參數返回值為void的委托.
Action委托 封裝一個方法,該方法不采用參數並且不返回值。
可以使用此委托以參數形式傳遞一個執行某操作的方法,而不用顯式聲明一個自定義的委托來封裝此方法。該封裝的方法必須與此委托定義的方法簽名相對應。這意味著該方法不得具有參數和返回值。例:
using System; using System.Windows.Forms; public class Name { private string instanceName; public ActionShowName; public Show() { If(ShowName != null) ShowName(); } public Name(string name) { this.instanceName = name; } public void DisplayToConsole() { Console.WriteLine(this.instanceName); } public void DisplayToWindow() { MessageBox.Show(this.instanceName); } } public class ActionStudy { public static void Main() { Name testName = new Name("Koani"); testName.ShowName = () => testName.DisplayToWindow(); testName.Show(); } }