修改字典值
.NET 2修改字典值
标准:
foreach(KeyValuePair<int,int> entry in MyDic)
{
entry.Value += i; // does not work :(
i++;
}
建议?
改为在Keys
属性上循环。当您使用枚举数时,对枚举数的任何修改都会使枚举数在下一次调用MoveNext
时失效。
您可以枚举Keys
或AllKeys
(它只是一个字符串数组)并修改它们指向的值非常安全。
此外,KeyValuePair<K, V>
的属性本身是只读的,所以,迭代器是否阻止,没有任何情况下您可以修改这些值而不滥用反射。
serhio:你无法修改字典的原因是你也修改了列举的值。以快速使用按键Joe Smith建议您可以修改这些值 - 但不要尝试在您的foreach循环中以这种方式添加/删除按键。 – 2010-06-19 01:09:31
感谢您强调这一点。值得一提的是,.NET中的大多数集合类都是由多个独立集合组成的。 – 2010-06-19 01:43:17
我需要注意条目的顺序。假设我添加了键1,10,3,5,我需要按照相同的顺序对其进行修改:1,10,3,5。这个顺序是否会受到尊重? – serhio 2010-06-21 08:01:20
“i”定义在哪里 – 2010-06-19 00:55:14