**델리게이트 (Delegate)**:
1. **개념**:
- 델리게이트는 메서드를 참조할 수 있는 형식으로, 메서드를 변수처럼 저장하고 전달할 수 있도록 해줍니다.
- 델리게이트는 대리자 역할을 하며, 다른 메서드를 호출하거나 이벤트 처리를 위해 사용됩니다.
2. **사용 예**:
- 델리게이트는 일반적으로 콜백 메서드, 이벤트 핸들러 등을 저장하고 호출하는 데 사용됩니다.
- 다른 객체에 대한 참조를 저장하고 해당 객체의 메서드를 호출할 수 있습니다.
3. **예시**:
// 델리게이트 정의
delegate void MyDelegate(string message);
// 델리게이트 인스턴스 생성
MyDelegate myDelegate = Console.WriteLine;
// 델리게이트를 사용하여 메서드 호출
myDelegate("Hello, World!");
**이벤트 (Event)**:
1. **개념**:
- 이벤트는 클래스나 객체가 다른 클래스나 객체에 대한 알림을 제공하고 해당 알림에 대한 응답으로 메서드를 호출하는 데 사용됩니다.
- 이벤트는 델리게이트를 기반으로 하며, 특정 이벤트가 발생하면 연결된 이벤트 핸들러 메서드가 호출됩니다.
2. **사용 예**:
- 이벤트는 사용자 인터페이스 컨트롤에서 버튼 클릭, 키보드 입력 등과 같은 작업에 대한 응답으로 사용됩니다.
- 클래스 내에서 중요한 상태 변경을 알리고 처리할 때도 사용됩니다.
3. **예시**:
// 이벤트 정의
public event EventHandler MyEvent;
// 이벤트 핸들러 메서드 정의
private void HandleEvent(object sender, EventArgs e)
{
Console.WriteLine("Event handled.");
}
// 이벤트 핸들러 등록
MyEvent += HandleEvent;
// 이벤트 발생
MyEvent?.Invoke(this, EventArgs.Empty);
**차이점과 비교**:
- **역할**:
- 델리게이트: 메서드의 참조를 저장하고 호출하는 데 사용됩니다.
- 이벤트: 다른 객체에 대한 알림을 제공하고 해당 알림에 대한 응답으로 이벤트 핸들러 메서드를 호출하는 데 사용됩니다.
- **구조**:
- 델리게이트: 단독으로 사용되며 메서드 참조만 저장합니다.
- 이벤트: 델리게이트를 기반으로 하며 이벤트 핸들러를 등록 및 해제하는 데 사용됩니다.
- **호출 방식**:
- 델리게이트: 직접 호출됩니다.
- 이벤트: 이벤트가 발생할 때 연결된 이벤트 핸들러 메서드가 자동으로 호출됩니다.
델리게이트는 메서드 호출을 직접 관리하고자 할 때 사용되며, 이벤트는 다른 객체에 상태 변경을 알리고 응답을 처리하는 데 사용됩니다. 이벤트는 보통 델리게이트를 내부적으로 사용하여 이벤트 핸들러를 호출합니다.
https://lab.cliel.com/entry/C-%EB%8C%80%EB%A6%AC%EC%9E%90%EC%99%80-%EC%9D%B4%EB%B2%A4%ED%8A%B8
'Programming > C# - Window' 카테고리의 다른 글
C#/ 이벤트 핸들러 함수(Event Handler) (0) | 2023.10.12 |
---|---|
C#/ partial 클래스 (0) | 2023.10.12 |
C#/ Regex(정규 표현식) 사용 (0) | 2023.10.10 |
C#/ 스트림(stream) (0) | 2023.10.10 |
C#/ CefSharp 사용 (0) | 2023.10.10 |