ITPub博客

首页 > 数据库 > 数据库开发技术 > C# Action用法

C# Action用法

原创 数据库开发技术 作者:后端Q 时间:2023-10-14 11:02:50 0 删除 编辑

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++)
            {
                //因为是按地址传递参数,所以要声明变量,不如结果都是10
                int 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
张三
张三


原文作者:后端Q;如有侵权,请联系管理员删除。

下一篇: git代码提交流程
请登录后发表评论 登录
全部评论

注册时间:2023-01-22

  • 博文量
    1540
  • 访问量
    726085