Action是在 System 命名空間中定義的委托類型。Action類型委托與Func委托相同,除了Action委托不返回值。換句話說,可以將Action委托與具有void返回類型的方法一起使用。
Action<T>是.NET Framework內置的泛型委托,可以使用Action<T>委托以參數(shù)形式傳遞方法,而不用顯示聲明自定義的委托。封裝的方法必須與此委托定義的方法簽名相對應。也就是說,封裝的方法必須具有一個通過值傳遞給它的參數(shù),并且不能有返回值。
例如,以下委托打印一個int值。
public delegate void Print(int val); static void ConsolePrint(int i) { Console.WriteLine(i); } static void Main(string[] args) { Print prnt = ConsolePrint; prnt(10); }
10
您可以使用Action委托代替上面定義的Print委托,例如:
static void ConsolePrint(int i) { Console.WriteLine(i); } static void Main(string[] args) { Action<int> printActionDel = ConsolePrint; printActionDel(10); }
您可以使用 new 關鍵字或直接分配一個方法來初始化Action委托:
Action<int> printActionDel = ConsolePrint; //或者 Action<int> printActionDel = new Action<int>(ConsolePrint);
Action 委托最多可以接受16個不同類型的輸入?yún)?shù)。
還可以將 匿名方法 分配給 Action 委托,例如:
static void Main(string[] args) { Action<int> printActionDel = delegate(int i) { Console.WriteLine(i); }; printActionDel(10); }
10
Lambda表達式也可以與Action委托一起使用:
static void Main(string[] args) { Action<int> printActionDel = i => Console.WriteLine(i); printActionDel(10); }
因此,您可以使用任何不使用Action委托類型返回值的方法。
Action委托至少0個參數(shù),至多16個參數(shù),無返回值。
Action 表示無參,無返回值的委托。
Action<int,string> 表示有傳入?yún)?shù)int,string,無返回值的委托。
Action<int,string,bool> 表示有傳入?yún)?shù)int,string,bool,無返回值的委托。
Action<int,int,int,int> 表示有傳入4個int型參數(shù),無返回值的委托。
輕松快捷地定義委托。
使代碼簡短。
整個應用程序中的兼容類型。
Action 委托與 Func 委托相同,只是 Action 委托 不返回任何內容。返回類型必須為 void。
Action 委托可以具有0到16個輸入?yún)?shù)。
Action 委托可以與匿名方法 或 lambda表達式一起使用。