12.3 Delegate의 정리
Delegate란 위임, 대리자란 뜻으로 메서드의 실행을 대리변수가 대신하도록 하는 것을 말합니다. 메서드의 대리변수를 만들 수 있는 방법을 Delegate가 제공하는 것입니다. 대리자는 말 대신에 위임이라는 말을 사용하기도 하지만 같은 뜻입니다. Delegate를 메서드의 포인터와 연결하여 해석하기도 합니다. 메서드 포인터에 관련된 사항은 아래와 같이 정리할 수 있습니다.
▣ Delegate의 해석 |
ㅁ 메서드의 포인터를 편리하게 사용하는 방법을 제공한다. ㅁ Safe Type Method Pointer ㅁ Method의 Pointer를 C#에서는 Delegate라는 형식을 빌어 사용할 수 있게 해준다. ㅁ 메서드를 Delegate라는 것에게 관리하게 하고 메서드의 반환형과 매개변수 등의 안전성을 보장받는다. |
C# 이전의 언어에서는 메서드를 포인터를 통해서 호출하는 방법을 제공하고 있었습니다. 이러한 메서드의 포인터를 이용한 호출을 C#에서는 Delegate가 그 역할을 대신하고 있습니다. C#에서 사용상의 제약과 환경상의 차이 때문에 포인터를 이용한 메서드의 호출을 Delegate라는 방법을 이용하여 가능하게 하는 것입니다.
간단히 말하자면 포인터를 통해서 호출하는 것을 일반화(Generalization) 했다고 보면 오히려 쉬울 것입니다. 그래서, Delegate를 Safe Type Method Pointer라고 하는 것입니다. 이러한 일반화 과정을 거치기 위해서 꼭 필요한 요소가 바로 메서드의 형태와 Delegate의 형태를 일치시키는 것입니다. 형태의 일치에서 확인해야 하는 사항은 다음과 같습니다.
ㅁ 메서드와 Delegate의 반환형
ㅁ 메서드와 Delegate의 매개변수 개수
ㅁ 메서드와 Delegate의 매개변수 타입
위의 세가지의 요소가 일치해야만 특정 메서드가 Delegate화 할 수 있습니다. [출처] [펌] Delegate의 정리|작성자 눈꽃천사