C# 通过循环更新字典值字段
我已将C# 通过循环更新字典值字段,c#,dictionary,C#,Dictionary,我已将词典定义如下: Dictionary<string, double> collection = new Dictionary<string, double>(); Dictionary collection=newdictionary(); 现在我想更新我的值: foreach (KeyValuePair<string, double> pair int collection) { double val = 3.0; collecti
词典定义如下:
Dictionary<string, double> collection = new Dictionary<string, double>();
Dictionary collection=newdictionary();
现在我想更新我的值:
foreach (KeyValuePair<string, double> pair int collection)
{
double val = 3.0;
collection[pair.Value] = val; // Get an error
}
foreach(KeyValuePair对int集合)
{
双val=3.0;
集合[pair.Value]=val;//获取一个错误
}
我的错误是无法从双精度转换为字符串。
为什么会这样?试试这个
Dictionary<string, double> Copycollection= new Dictionary<string, double> (collections);
foreach (KeyValuePair<string, double> pair in Copycollection)
{
double val = 3.0;
collection[pair.Key] = val;
}
Dictionary Copycollection=新字典(集合);
foreach(Copycollection中的KeyValuePair对)
{
双val=3.0;
集合[pair.Key]=val;
}
您不能在字典上迭代并更改内部值,因为它会破坏迭代器
您需要复制集合,并修改复制的版本…示例如下:
Dictionary<string, double> collection = new Dictionary<string, double>();
collection.Add("A", 1.0);
collection.Add("B", 2.0);
Dictionary<string, double> collection2 = new Dictionary<string, double>(collection);
foreach (KeyValuePair<string, double> pair in collection)
{
double val = 3.0;
collection2.Remove(pair.Key);
collection2.Add(pair.Key, val);
}
Dictionary collection=newdictionary();
集合。添加(“A”,1.0);
集合。添加(“B”,2.0);
字典集合2=新字典(集合);
foreach(集合中的KeyValuePair对)
{
双val=3.0;
收集2.移除(配对钥匙);
集合2.添加(pair.Key,val);
}
不会编译的int
应该是中的,
这不起作用,因为不允许在枚举期间更改集合。见问题。