참고
1. 이벤트란 ? : ★★★★
- 대리자를 기반으로 하여 함수를 대리자 객체에 저장 또는 해제하여 사용하되, 호출 자체는 내부에서만 가능하도록 한 것을 의미함.
2. 대리자와의 비교
1) 대리자
public delegate void MyDelegate();
MyDelegate del = SomeMethod; // 메서드 추가
del(); // 어디서든 직접 호출 가능
> 외부사용 가능(어디서든 호출 가능)
2) 이벤트
더보기
1. 외부사용 불가
Publisher pub = new Publisher();
pub.OnMessage("TEST"); // 불가능
2. 등록 및 해제 가능
public class Subscriber
{
public void Handler(string msg)
{
Console.WriteLine(msg);
}
}
> 외부 클래스의 멤버 메서드
Publisher pub = new Publisher(); // 이벤트 핸들러 객체
Subscriber sub = new Subscriber(); // 내부 등록자 객체
pub.OnMessage += sub.Handler; // OnMessage 라는 이벤트에 Handler 메서드 등록
pub.OnMessage -= sub.Handler; // 해제
> 등록 및 해제
2.1 사용
pub.SendMEssage("HELLO");
// SendMessage 가 실행되고, 내부의 Invoke(Event 호출) 함수 호출
// 이벤트 실행 > 구독된 함수(Handler) 실행됨
3. 핵심
> 이벤트는 대리자와 유사하지만 외부에서 직접 사용할 수 없고, 이벤트 발생시 구독된 메서드가 차례대로 실행되는 메커니즘을 가지고 있다.
'C# > Study' 카테고리의 다른 글
| 이것이 C#이다(Chapter 15. LINQ) ★★★★ (0) | 2026.04.25 |
|---|---|
| 이것이 C#이다(Chapter 13-1 대리자) ★★★★★ (0) | 2026.04.06 |
