zoukankan      html  css  js  c++  java
  • C# 3.0 / C# 3.5 系统内置委托

    内置委托的定义声明:

      System.Func,代表有返回类型的委托:

        public delegate TResult Func<out TResult>();
        public delegate TResult Func<in T, out TResult>(T arg);
        ……

        注:输入泛型参数 -in 最多可以有16个,输出泛型参数 -out 只有一个。

      System.Action,代表无返回类型的委托:

        public delegate void Action();
        public delegate void Action<in T>(T obj);       //list.Foreach
        public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2);
        ……

        注:最多有 16 个参数(全是输入参数)。

    Func / Action 委托使用可变性:

          Action<object> test = delegate (object o) { Console.WriteLine(o); };
          Action<string> test2 = test;
    
          Func<string> fest = delegate () { return Console.ReadLine(); };
          Func<string> fest2 = fest;

        协变指的是:委托方法的返回值类型 直接或间接继承自委托签名的返回值类型,

        逆变则是:参数类型继承自委托方法的参数类型。

    其他系统内置委托:

        public delegate bool Predicate<in T>(T obj);        //list.Find
        public delegate int Comparison<in T>(T x, T y);      //list.Sort

        System.Predicate<T> 代表返回 bool 类型的委托,用作执行表达式

        System.Comparison<T> 代表返回 int 类型的委托,用于比较两个参数的大小

        为什么要定义这么多简单的委托?  方便!

  • 相关阅读:
    利用 fsockopen() 函数开放端口扫描器
    oracle如何返回列名作为第一条数据简单解决
    redis
    MYSQL
    JUC 多线程
    java单例模式六种实现方式
    java.net.URISyntaxException 问题解决
    Calender类——字段值介绍
    Dorado开发——树形下拉框
    Java—— 一点关于String的转换
  • 原文地址:https://www.cnblogs.com/zhangchaoran/p/8727356.html
Copyright © 2011-2022 走看看