더북(TheBook)

대리자를 사용하는 간단한 예제를 먼저 살펴보겠습니다. 다음 내용을 입력한 후 실행해 보세요.

대리자 사용: DelegateDemo.cs

using System;

class DelegateDemo
{
    //① 함수 생성 -> 매개변수도 없고 반환값도 없는 함수
    static void Hi() => Console.WriteLine("안녕하세요.");

    //② 대리자 생성 -> 매개변수도 없고 반환값도 없는 함수를 대신 실행할 대리자
    delegate void SayDelegate();
    
    static void Main()
    {
        //ⓐ Hi 함수를 say 이름으로 대신해서 호출
        SayDelegate say = Hi;
        say();

        //ⓑ Hi 함수를 hi 이름으로 대신해서 호출: 또 다른 모양
        var hi = new SayDelegate(Hi);
        hi();
    }
}

실행 결과

안녕하세요.
안녕하세요.

Hi() 함수는 매개변수도 없고 반환값도 없는 간단한 함수입니다. 동일한 스타일의 함수를 대신 호출해 줄 수 있는 대리자는 처럼 delegate void 함수이름(); 형태로 구현할 수 있습니다. 이렇게 만든 대리자는 처럼 이미 만들어 놓은 Hi 함수를 대체할 목적으로도 사용할 수 있습니다. 이 예제에서는 Hi 함수를 say 이름으로 대신 호출할 수 있다는 것만 기억합니다. 대리자는 이처럼 이미 있는 함수를 대신 호출(위임해서 호출)하는 개념이 첫 번째 목적입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.