デリゲートを使用した C# オブザーバー/オブザーバブルの超シンプルな例 質問する

デリゲートを使用した C# オブザーバー/オブザーバブルの超シンプルな例 質問する

最近、C# を詳しく調べ始めましたが、この言語でオブザーバー/オブザーバブル パターンを実装するときにデリゲートがどのように機能するのか、どうしても理解できません。

誰か、それがどのように行われるかの超簡単な例を教えてくれませんか?持っているこれをグーグルで検索しましたが、見つかった例はすべて、問題が特定されすぎているか、または「肥大化」しすぎていました。

ベストアンサー1

オブザーバーパターンは通常、イベント

次に例を示します。

using System;

class Observable
{
    public event EventHandler SomethingHappened;

    public void DoSomething() =>
        SomethingHappened?.Invoke(this, EventArgs.Empty);
}

class Observer
{
    public void HandleEvent(object sender, EventArgs args)
    {
        Console.WriteLine("Something happened to " + sender);
    }
}

class Test
{
    static void Main()
    {
        Observable observable = new Observable();
        Observer observer = new Observer();
        observable.SomethingHappened += observer.HandleEvent;

        observable.DoSomething();
    }
}

詳細については、リンク先の記事をご覧ください。

上記の例ではC# 6を使用していることに注意してください。ヌル条件がサブスクライブされてお​​らず、したがって null であるDoSomethingケースを処理するために安全に実装する演算子。古いバージョンの C# を使用している場合は、次のようなコードが必要になります。SomethingHappened

public void DoSomething()
{
    var handler = SomethingHappened;
    if (handler != null)
    {
        handler(this, EventArgs.Empty);
    }
}

おすすめ記事