使用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();
}
}