【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 0; }; 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 > 0; };