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并更改值?

推荐答案

根据MSDN:

foreach语句是一个包装器

使用以下命令:

var dictionary = new Dictionary<string, double>();
// TODO Populate your dictionary here
var keys = new List<string>(dictionary.Keys);
foreach (string key in keys)
{
   dictionary[key] = Math.Round(dictionary[key], 3);
}

.net相关问答推荐

MSBuild:CopyToOutputDirectory不会将本机DLL复制到输出

SeriLog LogConext.PushProperty在ASP.NET MVC 5中不能使用OWIN中间件

在接口内部声明 IEnumerable 而在具体类中声明 IList

process.WaitForExit() 异步

如何获取控制台应用程序的执行目录

在c#中计算中位数

为什么 .Contains 慢?通过主键获取多个实体的最有效方法?

如何以编程方式判断类型是 struct 还是类?

我应该默认推荐密封类吗?

如何在 C# 4.0 中使任务进入睡眠状态(或延迟)?

是否有用于 Windows / C# 开发的可嵌入 Webkit 组件?

msbuild,定义条件编译符号

C# 方法可以定义为采用的最大参数数是多少?

在 .NET (C#) 中本地存储数据的最佳方式

是否可以在 XP 上运行 .NET 4.5 应用程序?

在 .NET Core 中在 MVC 之外使用 Razor

如何将整个字符串与正则表达式匹配?

如何判断uri字符串是否有效

Uri.Host 和 Uri.Authority 有什么区别

捕获控制台退出 C#