C# 연습

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 리뷰를 받을 수 있습니다.

모든 챌린지