只是为了确保,说我有这个代码:
this.allObjects = [some linq query];
并且有两个方法都可以读取(不修改)这个IEnumerable,它们是否可以安全地并行调用?只是循环IEnumerable应该是安全的吗?
答案 0 :(得分:1)
这取决于枚举器的实现,但在大多数情况下,是的,它是安全的。
但需要注意的是:伪代码,就像你拥有它一样,实际上并没有做任何事情(由于延迟执行)。只有在访问allObjects
时(或者如果在LINQ查询中调用类似ToList()
的内容),LINQ查询才会执行。
答案 1 :(得分:0)
IEnumerable<T>
个实例可能没问题(虽然它确实依赖于实现)。
IEnumerator<T>
个实例可能不罚款(尽管再次:实施细节)。