English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# Func 委托

C#包含内置的泛型委托类型 Func 和 Action,因此在大多数情况下您不需要手动定义自定义委托。

Func是包含在 System 命名空间中的泛型委托。它有零个或多个输入参数和一个 out 参数。最后一个参数被视为 out 参数。

什么是Func委托

Func 委托代表有返回类型的委托。

Func 在 System 命名空间中定义了一个 in 参数和一个 out 参数 的委托,如下所示:

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

尖括号中的最后一个参数<>被视为返回类型,其余参数被视为输入参数类型,如下图所示。

Func 위임

두 개의 입력 매개변수와 하나의 출력 매개변수를 가진 Func 위임은 다음과 같습니다.

Func 위임

다음 Func 위임은 두 개의 int 타입의 입력 매개변수를 받고, int 타입의 값을 반환합니다:

Func<int, int, int> sum;

위의 func 위임에 어떤 메서드든 할당할 수 있습니다. 이 메서드는 두 개의 매개변수를 필요로 하며, 반환 값을 가집니다int매개변수를 두 개로 설정하고, 그 결과를 반환하는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 위임 타입은 0개에서16개의 다른 타입의 입력 매개변수를 가질 수 있습니다. 그러나, 결과를 위한 out 매개변수를 포함해야 합니다. 예를 들어, 다음 Func 위임은 입력 매개변수가 없으며, 단순히 out 매개변수만 포함하고 있습니다.

Func<int> getRandomNumber;

Func 위임 예시 설명

  • Func은 최소 0개의 입력 매개변수, 최대16개의 입력 매개변수가 있으며, 반환 값을 제네릭으로 반환해야 합니다. 반드시 반환 값이 있어야 하며 void는 될 수 없습니다

  • Func<int>는 입력 매개변수가 없고 int 타입의 반환 값을 가진 위임입니다

  • Func<object, string, int>는 object, string 타입의 입력 매개변수를 가지고 int 타입의 반환 값을 가진 위임입니다

  • Func<object, string, int>는 object, string 타입의 입력 매개변수를 가지고 int 타입의 반환 값을 가진 위임입니다

  • Func<T1, T2, T3, int>는 T 타입의 입력 매개변수를 의미합니다1, T2, T3(제네릭), int 타입의 반환 값을 가진 위임

C# Func 위임과 익명 메서드

delegate 키워드를 사용하여 익명 메서드를 Func 위임에 할당할 수 있습니다.

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

C# Func 위임과 Lambda

Func 위임도 lambda 표현식과 함께 사용할 수 있습니다. 예를 들어:

Func<int> getRandomNumber = () => new Random().Next()1, 100);
//또는
Func<int, int, int> Sum = (x, y) => x + y;

 기억해야 할 주요 사항

  1. Func은 내장 대리자 타입입니다.

  2. Func 대리자 타입은 값을 반환해야 합니다.

  3. Func 대리자 타입은 0개에서16입력 매개변수.

  4. Func 대리자는 ref와 out 매개변수를 허용하지 않습니다.

  5. Func 대리자 타입은 익명 메서드나 lambda 표현식과 함께 사용할 수 있습니다.