【Unity|C#】基礎篇(11)——內置的泛型委托(Action/Func/Predicate)


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM