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 のレビューも受けられます。
すべてのチャレンジ