C#에서 이벤트는 주로 외부에서 구독과 해제를 쉽게 하기 위해 add와 remove 접근자를 제공합니다. 기본 구현 대신 커스터마이징을 통해 이벤트 처리 방식을 세밀하게 제어할 수 있습니다.
1. 이벤트 접근자 기본 구조
기본 이벤트는 다음과 같이 선언합니다.
public event EventHandler MyEvent;
이는 컴파일러가 내부적으로 add, remove를 자동 생성합니다.
2. 접근자 직접 구현하기
이벤트 구독과 해제를 커스터마이징하려면 add와 remove를 직접 구현합니다.
private EventHandler myEventHandlers;
public event EventHandler MyEvent
{
add
{
myEventHandlers += value; // 구독자 추가
}
remove
{
myEventHandlers -= value; // 구독자 제거
}
}
3. 커스터마이징 사례
예를 들어, 특정 조건에서만 구독자를 추가하거나 로그를 남길 수 있습니다.
public event EventHandler MyEvent
{
add
{
Console.WriteLine("Handler added");
myEventHandlers += value;
}
remove
{
Console.WriteLine("Handler removed");
myEventHandlers -= value;
}
}
4. 직접 이벤트 호출
내부에서 이벤트를 호출할 때는 delegate 변수를 null 체크 후 호출합니다.
myEventHandlers?.Invoke(this, EventArgs.Empty);
이벤트 접근자 커스터마이징을 통해 더 유연한 이벤트 관리가 가능합니다.
'C#' 카테고리의 다른 글
| C# 구조체(Struct) 심층 분석 (1) | 2026.04.21 |
|---|---|
| C# 메모리 누수 방지를 위한 약한 참조(WeakReference) 사용 (1) | 2026.04.20 |
| C# Indexer로 클래스 데이터 배열처럼 다루기 (0) | 2026.04.19 |
| C# CancellationToken으로 작업 취소 구현하기 (0) | 2026.04.18 |
| C# Lock과 Monitor로 스레드 동기화 (0) | 2026.04.17 |