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 단축키로 찾을 수 없다. )
- 코드 분석이 힘들다.