델리게이트(Delegate)에 개념에 대해 설명해주세요.
델리게이트는 대리자라는 뜻으로, 메소드를 참조해 간접적으로 호출하기 위해 사용합니다. 델리게이트는 객체로써 변경이 가능하고 인수로 전달할 수 있으며 사용할 때는 메소드의 반환형, 매개 변수의 종류와 갯수가 모두 일치해야 합니다. 델리게이트를 사용함으로써 콜백이나 구독 패턴을 구현할 수 있습니다.
Delegate 클래스 = 메소드를 참조하는 대리자.
델리게이트 객체는 변경 가능한 변수.
변수이기 때문에 인수로 전달 가능 => 콜백.
발행/구독 패턴.
델리게이트가 대신할 수 있는 메소드는 반환형, 매개 변수 종류와 갯수가 모두 일치해야 한다.
메소드를 직접 호출하는 것이 아닌 델리게이트를 통해 간접적으로 호출.
델리게이트 체인.
delegate void dele(int a);
class TEST
{
public static void Method1(int a) { Console.WriteLine($"Method1 {a}"); }
public static void Method2(int a) { Console.WriteLine($"Method2 {a}"); }
static void Main()
{
dele d;
d = Method1;
d(12);
d += Method2;
d(34);
}
}
=> Method1 12
Method1 34
Method2 34