gpt4 book ai didi

c# - C# observer/observable with delegates 的 super 简单示例

转载 作者:IT王子 更新时间:2023-10-29 03:33:08 25 4
gpt4 key购买 nike

我最近开始深入研究 C#,但我无法弄清楚在使用该语言实现观察者/可观察模式时委托(delegate)是如何工作的。

有人可以给我一个 super 简单的例子来说明它是如何完成的吗?我用谷歌搜索了这个,但我发现的所有示例要么过于针对特定问题,要么过于“臃肿”。

最佳答案

观察者模式通常用events来实现.

这是一个例子:

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-conditional 运算符来安全地实现 DoSomething 以处理尚未订阅 SomethingHappened 的情况,因此为空。如果您使用的是旧版本的 C#,则需要这样的代码:

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

关于c# - C# observer/observable with delegates 的 super 简单示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1249517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com