Action是无返回值的泛型委托
可以使用 Action<T1, T2, T3, T4> 委托以参数形式传递方法,而不用显式声明自定义的委托。封装的方法必须与此委托定义的方法签名相对应。也就是说,封装的方法必须具有四个均通过值传递给它的参数,并且不能返回值。(在 C# 中,该方法必须返回 void)通常,这种方法用于执行某个操作。
1、Action 表示无参,无返回值的委托
2、 Action<int,string> 表示有传入参数int,string无返回值的委托
3、Action<int,string,bool> 表示有传入参数int,string,bool无返回值的委托
4、 Action<int,int,int,int> 表示有传入4个int型参数,无返回值的委托
5、 Action至少0个参数,至多16个参数,无返回值。
class Program{static void Main(string[] args){//循环调用,action不传参List<Action> actions = new List<Action>();for (int i = 0; i < 10; i++){//因为是按地址传递参数,所以要声明变量,不如结果都是10int k = i;actions.Add(() => Console.WriteLine(k));}foreach (Action a in actions){a();}//传递两个参数Action<string, int> action = new Action<string, int>(ShowAction);Show("张三",29,action);//传递一个参数Show("张三",o=>Console.WriteLine(o));//不传递参数调用Show(()=>Console.WriteLine("张三"));}public static void ShowAction(string name, int age){Console.WriteLine(name + "的年龄:" + age);}public static void Show(string name, int age, Action<string, int> action){action(name, age);}public static void Show(string name, Action<string> action){action(name);}public static void Show(Action action){action();}}
输出结果:
0
1
2
3
4
5
6
7
8
9
张三的年龄:29
张三
张三