我声明了一个Dictionary类型的对象,并尝试添加一些项目到它。但我无法修改该物品的价值。钥匙不可修改是合理的,但为什么不能修改?谢谢。为什么.NET Dictionary <TKey,TValue>是不可变的?
Dictionary<string, string> dict = new Dictionary<string, string>();
dict.Add("1", "bob");
dict.Add("2", "jack");
dict.Add("3", "wtf");
foreach (string key in dict.Keys)
{
dict[key] = "changed"; //System.InvalidOperationException: Collection was modified
}
换句话说,当前迭代的集合是不可变的 – abatishchev 2010-11-15 10:55:31
@abatishchev,不应修改的对象与无法修改的对象之间存在差异。术语_immutable_指的是后者,而正在迭代的集合是前者。 – 2013-05-21 14:06:35