【Action】

  • 无返回值 的泛型委托,可以有0~16个参数(函数重载)
  • public delegate void Action();                               // 无参数
    public delegate void Action<in T>(T obj); // 1个参数
    public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2); // 2个参数
    // ...... 最多16个参数 // 使用举例
    Action action0 = () => { };
    Action<int> action1 = (a) => { };
    Action<int, float> action2 = (a, b) => { };
    Action<int, int, double> action2 = (a, b, c) => { };
    // ......

【Func】

  • 有返回值 的泛型委托,可以有0~16个参数(不包括返回值类型) (函数重载)
  • public delegate TResult Func<out TResult>(); // 无参数
    public delegate TResult Func<in T, out TResult>(T arg); // 1个参数
    public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2); // 2个参数
    // ...... 最多16个参数(不包括TResult) // 使用举例
    Func<int> func0 = () => { return ; };
    Func<int, int> func1 = (a) => { return a; };
    Func<int, int, int> func2 = (a, b) => { return a + b; };
    // ......

【Predicate】

  • 返回值为bool 的泛型委托,只能传递1个参数
  • 其实相当于  TResult Func<in T, out TResult>(T arg);  的 TResult为bool 
  • // 只有一个泛型委托,没有多参数重载
    public delegate bool Predicate<in T>(T obj); // 使用举例
    Predicate<int> p = (a) => { return a > ; };
04-28 12:13