C#のアレイリストやディグショナリ、ハッシュテーブルのフェッチ中にフェッチ対象を更新すると以下のエラーが発生します。
>InvalidOperationException: Collection was modified; enumeration operation may not execute.
System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[TKey,TValue].MoveNext () (at
解決方法
ディグショナリ.Keys.CopyToで文字列配列を使う
修正例
public void HenComMage()
{
//ディグショナリを一度文字配列にする od.hen=ディグショナリです
string[] henKey = new string[od.hen.Keys.Count];
string[] comKey= new string[od.henCom.Keys.Count];
od.henCom.Keys.CopyTo(comKey, 0);
od.hen.Keys.CopyTo(henKey, 0);
//フェッチを使わずにストリングを使う
//foreach (string key in od.henCom.Keys)
for(int i=0;i<comKey.Length;i++)
{
for (int j= 0; j < henKey.Length; j++)
{
if (henKey[j].Equals(comKey[i]))
{
od.henCom[henKey[j]] = od.hen[henKey[j]];//ディグショナリの値を更新
}
}
}
}
0 件のコメント:
コメントを投稿