.NET 2修改字典值
標準:
foreach(KeyValuePair<int,int> entry in MyDic)
{
entry.Value += i; // does not work :(
i++;
}
建議?
.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