【发布时间】:2016-12-22 04:55:50
【问题描述】:
背景: 我有一个字典diskInfo,键为字符串,值为字符串类型的字典,双精度。对于 foreach 循环中的每个条目,我计算磁盘空间并将结果存储到 spaceInfo 字典中。然后将其传递以存储为 diskInfo 字典中相应键的值。
问题 每次我清除 spaceInfo 中的现有条目并在存储到 diskInfo 字典之前读取键值对。在循环结束时,diskInfo 字典正确存储了键,但所有键的值计数为 0。我是使用字典的新手,请您帮忙解释一下为什么会发生这种情况。
谢谢你
Dictionary<string, double> spaceInfo = new Dictionary<string, double>();
Dictionary<string, Dictionary<string, double>> diskInfo = new Dictionary<string, Dictionary<string, double>>();
foreach (ManagementObject mo in queryCollection)
{
double size = Convert.ToDouble(mo["Size"]) / divisor;
double free = Convert.ToDouble(mo["FreeSpace"]) / divisor;
double percentFree = (free / size) * 100;
spaceInfo.Add("size",size);
spaceInfo.Add("freeSpace",free);
spaceInfo.Add("percentFree",percentFree);
diskInfo.Add(Convert.ToString(mo["Name"]),spaceInfo);
spaceInfo.Clear();
}
【问题讨论】:
-
put Dictionary
spaceInfo = new Dictionary ();在循环中,并删除 spaceinfo.clear(); -
另外,您可以使用类而不是字典来获取空间信息。
标签: c# dictionary