델리게이트란?
메서드를 참조하는 타입
쉽게 생각해서 참조형인 클래스를 서로 다른 인스턴스에 할당할 수 있듯(Heap영역 주소를 참조)
메서드의 주소를 참조해서 호출할 수 있는 타입이다
delegate bool TempDelegate();
TempDelegate td;
기본적인 델리게이트 선언구
Action AT;//패턴 전송용
Action<Type> ActionTest;
자주 사용하는액션의 선언구
Func<T> SetState;
enemy.SetState = ()=> IsAttackState();
Func의 선언구
| 타입 | 내장 여부 | 리턴값 | 매개변수 |
|---|---|---|---|
Delegate T() | X | T | 선언부에 직접 기입 |
Action<T> | O | 없음(void) | <T1, T2, ...> |
Func<..., T> | O | T(마지막 타입) | 마지막 T 앞에 오는 타입들 |