最近、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);
}
}