相关疑难解决方法(0)

我应该使用List <IObserver>还是仅使用Action <T>来跟踪IObservable的订户?

我正在实现IObservable<T>某些类的接口.我使用Reflector来弄清楚这是如何在Rx中完成的.关于观察者如何跟踪其订阅者并通过他们的OnNext方法通知他们,我偶然发现了与此类似的代码:

private List<Observer<T>> observers;

// subscribe a new observer:
public IDisposable Subscribe(IObserver<T> observer)
{
    observers.Add(observer);
    ...
}

// trigger all observers' OnNext method:
...
foreach (IObserver<T> observer in observers)
{
    observer.OnNext(value);
}
Run Code Online (Sandbox Code Playgroud)

由于所有代表都是多播的,因此不能简化为:

Action<T> observers;

// subscribe observer:
public IDisposable Subscribe(IObserver<T> observer)
{
    observers += observer.OnNext;
    ...
}

// trigger observers' OnNext:
...
observers(value);
Run Code Online (Sandbox Code Playgroud)

或者第一种方法(性能,线程/并发问题......)有特定的优势吗?

.net c# delegates system.reactive

3
推荐指数
2
解决办法
581
查看次数

标签 统计

.net ×1

c# ×1

delegates ×1

system.reactive ×1