C#에서 델리게이트(delegate)와 이벤트(event)는 함수를 간접적으로 참조하고, 특정 시점에 호출할 수 있게 하는 기능적인 요소입니다. 이들은 객체 지향 프로그래밍과 이벤트 기반 프로그래밍을 강화하는 중요한 도구로 활용됩니다.
델리게이트는 C#에서 메소드 참조를 위한 타입 안전한 함수 포인터라고 할 수 있습니다. 클래스와 유사하게 정의되며, 델리게이트를 사용하면 메소드를 변수에 할당하고, 파라미터로 전달하며, 메소드를 호출할 수 있습니다.
기본 사용법:
public delegate void MyDelegate(string message);
public void ShowMessage(string message) {
Console.WriteLine(message);
}
MyDelegate del = new MyDelegate(ShowMessage);
del("Hello, World!");
이 키워드들은 자주 사용하게 되는 델리게이트를 템플릿화 한 것들입니다.
이벤트는 델리게이트를 기반으로 하여, 클래스 또는 객체가 특정 행동을 외부에 알릴 때 사용합니다. 이벤트는 일반적으로 클래스의 특정 조건(상태 변경, 키 입력 등)이 충족될 때 발생합니다.
기본 사용법:
public event MyDelegate MyEvent;
protected virtual void OnMyEvent(string message) {
MyEvent?.Invoke(message);
}
MyClass obj = new MyClass();
obj.MyEvent += ShowMessage; // 이벤트 구독
obj.OnMyEvent("Event triggered!"); // 이벤트 발생