这个问题引用了CompositeDisposable命名空间中的 System.Reactive.Disposables 类。
CompositeDisposable在其成员上调用Dispose的顺序是否确定?

以下实验产生了列表['a', 'b'],但是我在文档中看不到任何可以保证一定顺序的内容。

var result = new List<char>();
var disposable = new CompositeDisposable(
    Disposable.Create(() => result.Add('a')),
    Disposable.Create(() => result.Add('b')));
disposable.Dispose();

最佳答案

内部CompositeDisposable使用以下字段存储一次性用品:

private List<IDisposable> disposables;

它使用列表.Add(...)方法将项目添加到列表的末尾。通过构造函数添加项目时,列表将按顺序用一次性用品实例化。

然后,在处理时,它在一次性对象上使用简单的foreach循环。

因此,您可以确信当前的实现将按顺序处理它们。您还可以做出明智的猜测,即使他们将来更改了实现,他们也不会更改此行为,否则将是一个重大更改。

关于c# - CompositeDisposable-确定性顺序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24765432/

10-10 13:33