Action是在 System 命名空间中定义的委托类型。Action类型委托与Func委托相同,除了Action委托不返回值。换句话说,可以将Action委托与具有void返回类型的方法一起使用。
Action<T>是.NET Framework内置的泛型委托,可以使用Action<T>委托以参数形式传递方法,而不用显示声明自定义的委托。封装的方法必须与此委托定义的方法签名相对应。也就是说,封装的方法必须具有一个通过值传递给它的参数,并且不能有返回值。
例如,以下委托打印一个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个不同类型的输入参数。
还可以将 匿名方法 分配给 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个参数,至多16个参数,无返回值。
Action 表示无参,无返回值的委托。
Action<int,string> 表示有传入参数int,string,无返回值的委托。
Action<int,string,bool> 表示有传入参数int,string,bool,无返回值的委托。
Action<int,int,int,int> 表示有传入4个int型参数,无返回值的委托。
轻松快捷地定义委托。
使代码简短。
整个应用程序中的兼容类型。
Action 委托与 Func 委托相同,只是 Action 委托 不返回任何内容。返回类型必须为 void。
Action 委托可以具有0到16个输入参数。
Action 委托可以与匿名方法 或 lambda表达式一起使用。