1. ホーム
  2. .net

Dictionaryを反復処理し、値を変更するには?

2023-10-14 23:18:30

質問

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);
}