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 のレビューも受けられます。

すべてのチャレンジ