워크/C# 1.0
위임(Delegates) 및 이벤트(Events)
Dev A.i
2023. 8. 24. 17:57
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#에서 매우 강력한 기능을 제공하며, 이벤트 기반 프로그래밍, 콜백 및 비동기 프로그래밍과 같은 다양한 시나리오에서 유용하게 사용됩니다.