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 |