委托一-- 系统内置泛型 Action 无返回值,参数可有可无 ,Func 有返回值 参数参数可有可无

诞生于 .net FrameWork 3.0,有了 Action 和 Func 基本上我们就不用在自己创建委托了

系统预制 这两个委托的意图也是想 让 委托更加通用

, 因为 Action 和 Func 与 自己写的 完全相同的 参数与返回值的委托却不能转换为同一类型,

没有通用性

在3.0以后的API 就大量使用 Action 和 Func  来封装,所以也不再建议创建新的委托

 

创建 Action 的 方式 :使用语法糖实例化委托的方式看起来真的牛逼,感觉是lamada 的萌芽状态,之前我以为只有 Action 和 Func才能使用这个语法糖呢,原来所有的委托都可以使用语法糖

            //无参数无返回值委托 普通实例化
            Action action = new Action(SaySomething);
            //无参数无返回值委托 语法糖实例化
            Action action1 = SaySomething;
            action.Invoke();
            action1.Invoke();

            //有参数
            Action<string> ac = PeopleSaySomething;
            ac.Invoke("小明");

Action 是最多可以有16个泛型参数 的内置泛型无返回值委托

var ac = new Action<string,int,long,object,Func,string, string, int, long, 
               object, Func, string, string, int, string, int>();

Func的使用方法:

没有参数:

          //委托版本
        static void Main(string[] args)
        {
            Func<string> fun = RetSomething;//实例化 返回值为 string 的 委托
            Console.WriteLine(fun.Invoke());
            Console.Read();
        }

        //无参数无返回值方法
        public static string RetSomething()
        {
            return "哈哈哈";
        }

需要参数的怎么做呢?


        static void Main(string[] args)
        {
            Func<string,string> fun = PeopleSaySomething;//实例化 返回值为 string 的 委托
            Console.WriteLine(fun.Invoke("小明"));
            Console.Read();
        }

        //无参数无返回值方法
        public static string PeopleSaySomething(string name)
        {
            return $"{name},哈哈哈";
        }

在  Func<string,string> 上 F12 出现如下: 最后一个参数是被作为返回值类型的

Func 的参数类型最多也是16个 ,后边还有一个 返回值类型

如下:

  static void Main(string[] args)
        {
            var hh = new Func<string, string, int, object,
                              string, string, int, object,
                              string, string, int, object,
                              string, string, int, object, string>(PeopleSaySomething);
            Console.Read();
        }

        //无参数无返回值方法
        public static string PeopleSaySomething(string name, string a, int z, object w,
                             string l, string s, int x, object e,
                             string d, string c, int i, object r,
                             string f, string v, int o, object t)
        {
            return $"{name},哈哈哈";
        }

Func 是 是最多可以有 16  个泛型参数 的内置  有返回值  泛型  委托( 加上返回值类型就是最多17个参数 )如上

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值