delegate(C# 참조)

업데이트: 2007년 11월

대리자 형식의 선언은 메서드 시그니처와 비슷하므로, 반환 값을 가지며 모든 유형의 매개 변수를 원하는 수만큼 사용할 수 있습니다.

public delegate void TestDelegate(string message);
public delegate int TestDelegate(MyType m, long num);

delegate는 명명된 메서드나 익명 메서드를 캡슐화하는 데 사용할 수 있는 참조 형식입니다. 대리자는 C++의 함수 포인터와 비슷하지만 형식 안전성과 보안성을 제공한다는 점이 다릅니다. 대리자 응용 프로그램에 대한 자세한 내용은 대리자제네릭 대리자를 참조하십시오.

설명

대리자는 이벤트의 기반을 형성합니다.

대리자는 명명된 메서드나 무명 메서드와 연결하여 인스턴스화할 수 있습니다. 자세한 내용은 명명된 메서드무명 메서드를 참조하십시오.

대리자는 호환되는 반환 형식과 입력 매개 변수가 있는 메서드나 람다 식으로 인스턴스화해야 합니다. 메서드 시그니처에 허용되는 변동 범위에 대한 자세한 내용은 대리자의 공변성(Covariance)과 반공변성(Contravariance)을 참조하십시오. 무명 메서드와 함께 사용하는 경우 대리자 및 대리자와 연결된 코드가 함께 선언됩니다. 이 단원에서는 대리자를 인스턴스화하는 두 가지 방법을 모두 설명합니다.

예제

// Declare delegate -- defines required signature:
delegate double MathAction(double num);

class DelegateTest
{
    // Regular method that matches signature:
    static double Double(double input)
    {
        return input * 2;
    }

    static void Main()
    {
        // Instantiate delegate with named method:
        MathAction ma = Double;

        // Invoke delegate ma:
        double multByTwo = ma(4.5);
        Console.WriteLine(multByTwo);

        // Instantiate delegate with anonymous method:
        MathAction ma2 = delegate(double input)
        {
            return input * input;
        };

        double square = ma2(5);
        Console.WriteLine(square);

        // Instantiate delegate with lambda expression
        MathAction ma3 = s => s * s * s;
        double cube = ma3(4.375);

        Console.WriteLine(cube);
    }
}

C# 언어 사양

자세한 내용은 C# 언어 사양의 다음 단원을 참조하십시오.

  • 1.11 대리자

  • 15 대리자

참고 항목

개념

C# 프로그래밍 가이드

참조

C# 키워드

참조 형식(C# 참조)

대리자(C# 프로그래밍 가이드)

이벤트(C# 프로그래밍 가이드)

명명된 메서드와 무명 메서드의 대리자 비교(C# 프로그래밍 가이드)

무명 메서드(C# 프로그래밍 가이드)

기타 리소스

C# 참조