image.png

image.png

image.png

image.png

1️⃣ 델리게이트(delegate)란?

델리게이트는 **“함수를 변수처럼 저장할 수 있는 타입”**이에요.

public delegate void OnMessage(string msg);

이 코드는

👉 "string을 받아서, void를 반환하는 함수"를 담을 수 있는 타입을 정의한 거예요.

즉, 이건 "그런 모양의 함수를 담을 수 있는 상자"예요.

예를 들어:

void PrintMessage(string msg)
{
    Console.WriteLine(msg);
}

OnMessage myDelegate = PrintMessage;  // 함수 담기
myDelegate("안녕!");  // 담긴 함수 실행

이렇게 하면 myDelegate("안녕!")이 호출될 때 → PrintMessage("안녕!")이 실행돼요.

2️⃣ 이벤트(event)란?

델리게이트를 그냥 변수처럼 쓰면 아무나 마음대로 호출할 수 있어서 위험해요.

그래서 C#에서는 델리게이트에 event 키워드를 붙여서 "방송"처럼 쓸 수 있게 만든 거예요:

public event OnMessage onMessage;

이렇게 하면