2010-06-19 113 views
0

.NET 2修改字典值

标准:

foreach(KeyValuePair<int,int> entry in MyDic) 
    { 
     entry.Value += i; // does not work :(
     i++; 
    } 

建议?

+0

“i”定义在哪里 – 2010-06-19 00:55:14

回答

4

改为在Keys属性上循环。当您使用枚举数时,对枚举数的任何修改都会使枚举数在下一次调用MoveNext时失效。

您可以枚举KeysAllKeys(它只是一个字符串数组)并修改它们指向的值非常安全。

此外,KeyValuePair<K, V>的属性本身是只读的,所以,迭代器是否阻止,没有任何情况下您可以修改这些值而不滥用反射。

+0

serhio:你无法修改字典的原因是你也修改了列举的值。以快速使用按键Joe Smith建议您可以修改这些值 - 但不要尝试在您的foreach循环中以这种方式添加/删除按键。 – 2010-06-19 01:09:31

+0

感谢您强调这一点。值得一提的是,.NET中的大多数集合类都是由多个独立集合组成的。 – 2010-06-19 01:43:17

+0

我需要注意条目的顺序。假设我添加了键1,10,3,5,我需要按照相同的顺序对其进行修改:1,10,3,5。这个顺序是否会受到尊重? – serhio 2010-06-21 08:01:20