Как обновить хэш-таблицу C # в цикле? - PullRequest
10 голосов
/ 29 ноября 2008

Я пытаюсь обновить хеш-таблицу в цикле, но получаю ошибку: System.InvalidOperationException: Коллекция была изменена; операция перечисления может не выполняться.

private Hashtable htSettings_m = new Hashtable();
htSettings_m.Add("SizeWidth", "728");
htSettings_m.Add("SizeHeight", "450");
string sKey = "";
string sValue = "";
foreach (DictionaryEntry deEntry in htSettings_m)
{
    // Get value from Registry and assign to sValue.
    // ...
    // Change value in hashtable.
    sKey = deEntry.Key.ToString();
    htSettings_m[sKey] = sValue;
}

Есть ли способ обойти это или, может быть, есть лучшая структура данных для этой цели?

Ответы [ 12 ]

0 голосов
/ 29 ноября 2008
private Hashtable htSettings_m = new Hashtable();

htSettings_m.Add("SizeWidth", "728");    
htSettings_m.Add("SizeHeight", "450");    
string sValue = "";    
foreach (string sKey in htSettings_m.Keys)    
{    
    // Get value from Registry and assign to sValue    
    // ...    
    // Change value in hashtable.    
    htSettings_m[sKey] = sValue;    
}
0 голосов
/ 29 ноября 2008

Может быть, вы можете использовать коллекцию Hashtable.Keys? Перечисление этого может быть возможным при изменении Hashtable. Но это только предположение ...

...