这个问题引用了 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/