본문 바로가기

워크/C# 1.0

위임(Delegates) 및 이벤트(Events)

C#의 **위임(Delegates)**는 함수에 대한 참조를 나타내며, 콜백, 이벤트, 람다 표현식 등에서 사용됩니다. **이벤트(Events)**는 일반적으로 위임을 기반으로 하며, 특정 액션이나 상황이 발생할 때 알림을 보내는 데 사용됩니다.

1. 위임(Delegates)

public delegate void MyDelegate(string message); // 위임의 선언

public class DemoClass
{
    public void ShowMessage(string message)
    {
        Console.WriteLine($"Message from DemoClass: {message}");
    }
}

class Program
{
    static void Main()
    {
        DemoClass demo = new DemoClass();

        MyDelegate del = demo.ShowMessage; // 위임의 인스턴스 생성

        del("Hello, World!"); // 위임 호출
    }
}

2. 이벤트(Events)

public delegate void Notify();  // 위임 선언

public class ProcessBusinessLogic
{
    public event Notify ProcessCompleted; // 이벤트 선언

    public void StartProcess()
    {
        Console.WriteLine("Process Started!");
        // ... 여러 처리 작업 ...

        OnProcessCompleted();
    }

    protected virtual void OnProcessCompleted()
    {
        ProcessCompleted?.Invoke(); // 이벤트 발생
    }
}

class Program
{
    static void Main()
    {
        ProcessBusinessLogic bl = new ProcessBusinessLogic();
        bl.ProcessCompleted += bl_ProcessCompleted; // 이벤트 구독

        bl.StartProcess();
    }

    // 이벤트 핸들러
    public static void bl_ProcessCompleted()
    {
        Console.WriteLine("Process Completed!");
    }
}

이 예제에서 ProcessBusinessLogic 클래스는 StartProcess 메서드를 가지며, 이 메서드는 프로세스를 시작하고 완료될 때 ProcessCompleted 이벤트를 발생시킵니다. Program 클래스는 이 이벤트를 구독하고 이벤트가 발생할 때 bl_ProcessCompleted 메서드를 호출합니다.

위임과 이벤트는 C#에서 매우 강력한 기능을 제공하며, 이벤트 기반 프로그래밍, 콜백 및 비동기 프로그래밍과 같은 다양한 시나리오에서 유용하게 사용됩니다.

 

'워크 > C# 1.0' 카테고리의 다른 글

Versioning Support  (0) 2023.08.24
자동 Implemented Properties  (0) 2023.08.24
속성(Properties) 및 인덱서(Indexers)  (0) 2023.08.24
통합된 Exception Handling  (0) 2023.08.24
Garbage Collection  (0) 2023.08.24