为什么List <T>,Dictionary <T>和其他集合包含一个名为"version"的字段?

Fre*_* L. 4 .net c#

我正在查看C#的源代码参考,在一些集合中我发现:

int _version = 0;
Run Code Online (Sandbox Code Playgroud)

每次收集更改时,版本都会增加.

这个领域的重点是什么?

字典

名单

Kyl*_*yle 6

这里查看源代码,它似乎用于检查状态是否已更改并导致内部在枚举时Enumerator抛出InvalidOperationException.这也适用于该List<T>.ForEach(..)方法.

这是有道理的,因为在枚举时修改集合是不合法的.更准确地说,一旦修改后继续迭代一个集合是不合法的,但我发现前一个规则使我无法进入后者.