例如我可以去:
string[] keys = new string[items.Count];
items.Keys.CopyTo(keys);
其中项目是:
Dictionary<string, MyObject>
可能被另一个线程修改的实例?(我不清楚在访问 Keys 属性时 Dictionary 的内部工作是否会迭代集合——在这种情况下,我知道它不是线程安全的)。
更新:我意识到我上面的例子不是线程安全的,因为字典的大小可以在行之间改变。但是呢:
Dictionary<string, MyObject> keys = items.Keys;
string[] copyOfKeys = new string[keys.Count];
keys.Keys.CopyTo(copyOfKeys );