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
应该是
中的
这不起作用,因为不允许在枚举期间更改集合。见问题。