C#에서 이벤트로 구현하는 발행자와 구독자 모델
이 레슨에서는 이벤트로 주문 상태가 바뀔 때마다 구독한 객체에 알립니다.
소개
이벤트를 쓰면 바깥에서 구독해 알림을 받을 수 있지만, 이벤트를 발생시킬 수 있는 것은 이벤트를 가진 클래스뿐입니다. C#에서 발행자와 구독자 모델을 안전하게 구현하는 방법입니다.
Order 클래스는 EventHandler<string> 타입의 StatusChanged 이벤트를 선언합니다. 즉 새 상태를 설명하는 문자열이 함께 전달됩니다. Main에서 람다가 구독해 상태를 화면에 출력합니다. Update("Shipped")가 호출되면 ?. 연산자는 구독자가 있을 때만 이벤트를 발생시키므로 프로그램은 Shipped를 출력합니다.
실행 가능한 C# 예제
C#
Program.cs
using System;
class Order
{
public event EventHandler<string>? StatusChanged;
public void Update(string status) => StatusChanged?.Invoke(this, status);
}
class Program
{
static void Main()
{
var order = new Order();
order.StatusChanged += (_, status) => Console.WriteLine(status);
order.Update("Shipped");
}
}
Shipped디버거로 연습하기
중요한 대입이나 조건에 중단점을 두고 Debug를 눌러 다음 줄로 넘어가기 전에 지역 변수 값을 확인하세요.
챌린지로 연습하기
이 레슨에서 배운 내용으로 실제 문제를 풀어 보세요. 모든 챌린지는 브라우저에서 실행되며 즉시 테스트와 AI 리뷰를 받을 수 있습니다.
모든 챌린지