【发布时间】:2011-01-16 15:44:42
【问题描述】:
Dictionary<string,double> myDict = new Dictionary();
//...
foreach (KeyValuePair<string,double> kvp in myDict)
{
kvp.Value = Math.Round(kvp.Value, 3);
}
我收到一个错误:
“无法将属性或索引器‘System.Collections.Generic.KeyValuePair.Value’分配给——它是只读的。”
如何遍历 myDict 并更改值?
【问题讨论】:
-
如果从性能角度(间接和更多 gc 压力)可以接受添加大量引用对象并且您可以控制字典,然后为您的值创建一个框将解决问题,例如:
class Box<T> { public T boxed; },然后使用Dictionary<string, Box<double>>,然后您可以在 foreach 中“修改”类似:kvp.Value.boxed = 123.456;。并不是说这是“最好”的方法,但它有它的用途。 -
这能回答你的问题吗? Editing dictionary values in a foreach loop
标签: .net dictionary c#-3.0