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