셋 다 함수 포인터인데 뭐가 다를까?
아래 표로 설명해보겠다.
| 종류 | 반환타입 | 매개변수 |
|---|---|---|
| Delegate | public event Delegate float AA(float a, int b) | 뒤의 괄호 |
| Action | void | Action의 제네릭타입 |
| Func | 마지막 제네릭 타입 | Func의 제네릭타입 |
해당 함수포인터를 다룰땐 event키워드도 긴밀하니 event에 대해서도 알아두자
event 키워드란?
델리게이트를 “외부에서는 구독/해지만 가능하도록 제한하는
접근 제어 문법(언어 차원의 보호 장치)”이다.
선언 예시 :public event System.Action<float> action;
| 종류 | null 대입 | 함수 추가,제거 | 외부 호출 |
|---|---|---|---|
| event | X | O | X |
| none | O | O | O |
즉 event키워드는 타 클래스에서 자신이 등록한 함수 외에는 수정 할 수 없도록
캡슐화해주는 역할을 한다.