亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

C# Func 委托

C#包含內(nèi)置的泛型委托類(lèi)型 Func 和 Action,因此在大多數(shù)情況下您不需要手動(dòng)定義自定義委托。

Func是包含在 System 命名空間中的泛型委托。它有零個(gè)或多個(gè)輸入?yún)?shù)和一個(gè) out 參數(shù)。最后一個(gè)參數(shù)被視為 out  參數(shù)。

什么是Func委托

Func 委托代表有返回類(lèi)型的委托。

Func 在 System 命名空間中定義了一個(gè) in 參數(shù)和一個(gè) out 參數(shù) 的委托,如下所示:

namespace System
{    
    public delegate TResult Func<in T, out TResult>(T arg);
}

尖括號(hào)中的最后一個(gè)參數(shù)<>被視為返回類(lèi)型,其余參數(shù)被視為輸入?yún)?shù)類(lèi)型,如下圖所示。

Func 委托

具有兩個(gè)輸入?yún)?shù)和一個(gè)輸出參數(shù)的Func委托將如下所示。

Func 委托

以下Func委托接受兩個(gè)int類(lèi)型的輸入?yún)?shù),并返回一個(gè)int類(lèi)型的值:

Func<int, int, int> sum;

您可以為上面的func委托分配任何方法,這些方法需要兩個(gè)int參數(shù)并返回一個(gè)int值。

class Program
{
    static int Sum(int x, int y)
    {
        return x + y;
    }

    static void Main(string[] args)
    {
        Func<int,int, int> add = Sum;

        int result = add(10, 10);

        Console.WriteLine(result); 
    }
}
輸出:
20

Func委托類(lèi)型可以包括0到16個(gè)不同類(lèi)型的輸入?yún)?shù)。但是,它必須包含用于結(jié)果的out參數(shù)。例如,以下Func委托沒(méi)有任何輸入?yún)?shù),并且僅包含out參數(shù)。

Func<int> getRandomNumber;

Func 委托示例說(shuō)明

  • Func 至少0個(gè)輸入?yún)?shù),至多16個(gè)輸入?yún)?shù),根據(jù)返回值泛型返回。必須有返回值,不可void。

  • Func<int> 表示沒(méi)有輸入?yún)?shù),返回值為int類(lèi)型的委托。

  • Func<object,string,int> 表示傳入?yún)?shù)為object, string ,返回值為int類(lèi)型的委托。

  • Func<object,string,int> 表示傳入?yún)?shù)為object, string, 返回值為int類(lèi)型的委托。

  • Func<T1,T2,,T3,int> 表示傳入?yún)?shù)為T(mén)1,T2,,T3(泛型),返回值為int類(lèi)型的委托。

C# Func 委托與匿名方法

您可以使用 delegate 關(guān)鍵字將匿名方法分配給 Func 委托。

Func<int> getRandomNumber = delegate()
                            {
                                Random rnd = new Random();
                                return rnd.Next(1, 100);
                            };

C# Func 委托與Lambda

Func委托也可以與lambda表達(dá)式一起使用,如下所示:

Func<int> getRandomNumber = () => new Random().Next(1, 100);

//或者

Func<int, int, int>  Sum  = (x, y) => x + y;

 要記住的要點(diǎn)

  1. Func 是內(nèi)置委托類(lèi)型。

  2. Func 委托類(lèi)型必須返回一個(gè)值。

  3. Func 委托類(lèi)型可以具有零到16個(gè)輸入?yún)?shù)。

  4. Func 委托不允許 ref 和 out參數(shù)。

  5. Func 委托類(lèi)型可以與匿名方法或lambda表達(dá)式一起使用。