대리자 예제 코드
호출자 -> 메소드로 이어지는 과정에, 메소드를 참조하고 있는 대리자를 집어넣어 대리자에 의해서 메소드를 호출합니다. 예제 코드를 작성해봅니다.
delegate int MyDelegate(int a, int b);
class Calculator {
public int Plus (int a, int b) {
return a + b;
}
public int Minus (int a, int b) {
return a - b;
}
}
class Program {
static void Main(string[] args) {
Calculator Cal = new Calculator();
MyDelegate Callback;
Callback = new MyDelegate(Cal.Plus);
Console.WriteLine(Callback(5, 10));
Callback = new MyDelegate(Cal.Minus);
Console.WriteLine(Callback(7, 5));
}
}
보다시피 delegate는 하나의 타입이기에 대리자의 인스턴스를 생성해야합니다. 이때 참조할 '메소드' 를 매게 변수로 넘김으로서 대리자에게 메소드의 주소를 알려주는 것입니다. 대리자는 메소드의 주소를 가지고 호출할것이구요.
결과물