본문 바로가기

Programming Language/C#

[C#] Delegate(대리자)

  • 메서드를 대신 호출해준다고 해서 대리자 라고도 부르며 인스턴스가 아닌 형식(Type) 이다.
  • 따라서 사용할때 인스턴스를 생성해서 사용해야 한다.
  • Delegate 를 사용하면 한번의 이벤트에 여러 메서드를 동시에 호출 할 수 있고,
  • 메서드를 다른 메서드에 변수처럼 전달 가능하다.
  • 이벤트 처리, 비동기 프로세스 처리 등을 보다 간편하게 하기 위해 사용된다.
  • ✨ 정의하는 방법은 delegate 키워드를 사용하고, 대리자가 참조할 메서드를 생성한 후 new 키워드로 delegate 객체를 생성한다. (참조할 메서드의 형태는 대리자와 동일 해야 한다.)
// Mydelegate 라는 대리자 선언    
public delegate void MyDelegate(string msg);

public staitc void MethodA(string msg){
    Console.WriteLine("Param of Method A" + msg);
}

public static void MethodB(string msg){
    Console.WriteLine("Param of Method B" + msg);
}

static void Main(){
    // 사용법 Main()내부
    MyDelegate del;
    del = new MyDelegate(MethodA);
    del("Method A Call");

    del = new MyDelegate(MethodB);
    del("Method B Call");
}
2. Main() 내부 두번째 사용방법

// 선언과 동시에 할당
MyDelegate del = MethodA;
del("Method A Call");
del = MethodB;
del("Method B Call");

'Programming Language > C#' 카테고리의 다른 글

[C#] 전처리기  (0) 2023.12.27
[C#] Event  (0) 2023.12.27
[C#] 메서드 파라미터 ( ref, out )  (0) 2023.12.27
[C#] Nullable 타입 ( ?, ?? )  (1) 2023.12.27
[C#] 네임스페이스  (0) 2023.12.27