[c#] C#의 이벤트와 대리자

C#에서 이벤트(event)는 클래스나 객체에서 발생하는 특정한 일(사건)을 의미합니다. 이벤트는 다른 클래스나 객체에서 구독(subscribe)하고 처리할 수 있는 기능을 제공합니다.

이벤트는 대리자(delegate)를 사용하여 구현됩니다. 대리자는 이벤트가 발생했을 때 호출할 메서드들의 시그니처를 나타내는 형식입니다. 이를 통해 이벤트가 발생했을 때 해당 이벤트를 처리하는 메서드를 호출할 수 있습니다.

대리자 (Delegate)

대리자는 다른 메서드를 가리키는 참조 역할을 하는 형식입니다. 대리자를 이용하여 이벤트가 발생했을 때 호출될 메서드의 타입을 나타냅니다.

public delegate void MyEventHandler(object sender, EventArgs e);

위 예시에서 MyEventHandler 대리자는 object senderEventArgs e 매개변수를 갖는 메서드를 가리킵니다.

이벤트 (Event)

이벤트는 클래스 외부에서 발생한 특정 사건을 다른 클래스에서 감지하고 처리할 수 있는 기능을 제공합니다. 이벤트는 대리자를 통해 구현됩니다.

public class MyClass
{
    public event MyEventHandler MyEvent;
    
    public void DoSomething()
    {
        // Do something...
        MyEvent?.Invoke(this, EventArgs.Empty); // 이벤트 발생
    }
}

위 예시에서 MyEventMyEventHandler 타입의 이벤트로, DoSomething 메서드에서 이벤트를 발생시킵니다.

이렇게 이벤트와 대리자를 활용하면 C#에서 클래스나 객체 간의 효과적인 통신 및 상호작용을 구현할 수 있습니다.