



델리게이트는 **“함수를 변수처럼 저장할 수 있는 타입”**이에요.
public delegate void OnMessage(string msg);
이 코드는
👉 "string을 받아서, void를 반환하는 함수"를 담을 수 있는 타입을 정의한 거예요.
즉, 이건 "그런 모양의 함수를 담을 수 있는 상자"예요.
예를 들어:
void PrintMessage(string msg)
{
Console.WriteLine(msg);
}
OnMessage myDelegate = PrintMessage; // 함수 담기
myDelegate("안녕!"); // 담긴 함수 실행
이렇게 하면 myDelegate("안녕!")이 호출될 때 → PrintMessage("안녕!")이 실행돼요.
델리게이트를 그냥 변수처럼 쓰면 아무나 마음대로 호출할 수 있어서 위험해요.
그래서 C#에서는 델리게이트에 event 키워드를 붙여서 "방송"처럼 쓸 수 있게 만든 거예요:
public event OnMessage onMessage;
이렇게 하면
onMessage?.Invoke("내용")으로 “방송”만 가능