델리게이트(Delegate) : 대리자 [C#]

JanMatny·2024년 9월 3일

Delegate(델리게이트) : 함수의 주소 값을 가지고 대신 호출

Delegate : 대리자 정의 방법

접근 제한자 delegate 반환 형식 식별자 (매개 변수);

접근 제한자 : public, private, protected 등
delegate : 델리게이트(Delegate) 선언을 위한 키워드
반환 형식 : void, int 와 같이 대리 호출할 함수의 반환 형식(타입)
식별자 : 델리게이트(Delegate) 이름
매개 변수 : 대리 호출할 매개 변수 목록

델리게이트(Delegate) 정의 방법

대신 호출할 함수의 형식(시그니처)을 확인

  • 시그니처(signature) : 함수의 반환 타입과 매개 변수 목록

델리게이트(Delegate)란?

델리게이트(Delegate)는 타입 (자료형 : int, float 등..)이다.

  • 타입의 변수 선언 형식
  • 델리게이트는 매개 변수 형식이나 반환 형식으로 사용할 수 있다.
  • 델리게이트는 타입이기에 함수(메소드)를 매개 변수로 사용할 수 있다.
  • 델리게이트는 콜백(CallBack) [ 함수를 먼저 참조하고 나중에 호출한다 ] 해준다

※ 델리게이트 호출 과정 ※

객체(_MyDelegate) → 인스턴스(MyDelegate) → 함수(TestFunction)

Delegate(델리게이트) 코드 활용

델리게이트 체인(Delegate Chain)이란?

  • 하나의 델리게이트가 여러 함수를 동시에 참조할 수 있다.

델리게이트 이벤트(Delegate Event)란?

이벤트(Event) : 객체의 상태 변화나 사건의 발생을 알리는 용도

델리게이트 이벤트(Delegate Event) :

  • 델리게이트 이벤트는 외부에서 호출할 수 없다. ( 내부에서만 호출할 수 있다. ) [ 외부에서 호출하려고 할 경우 에러가 뜬다. ]
  • 대입 연산자로 대입을 할 경우 델리게이트 체인으로 연결한 함수들이 제거된다.
  • 외부에서 대입 연산자를 사용할 수 없다. ( 내부에서만 대입할 수 있다. )
    델리게이트 체인(Delegate Chain)으로 연결하고 지우는 것은 가능하다.

델리게이트(Delegate)의 장단점

델리게이트(Delegate)의 장점

  • 코드의 의존성이 적다.
  • 콜백(Call Back) : 함수를 먼저 대입하고 나중에 함수를 호출해주는 기능을 지원해준다.

델리게이트(Delegate)의 단점

  • 델리게이트는 무엇을 참조(사용)하는 지를 알려주지 않는다.
    델리게이트가 연결된 것을 찾으려면 직접 찾아야 한다는 게 델리게이트의 가장 큰 단점이다.
    (F10 단축키로 찾을 수 없다. )
  • 코드 분석이 힘들다.
profile
코딩 공부용 벨로그

0개의 댓글