대리자를 사용하는 간단한 예제를 먼저 살펴보겠습니다. 다음 내용을 입력한 후 실행해 보세요.
대리자 사용: 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 이름으로 대신 호출할 수 있다는 것만 기억합니다. 대리자는 이처럼 이미 있는 함수를 대신 호출(위임해서 호출)하는 개념이 첫 번째 목적입니다.