Коллекция была изменена;Операция перечисления может не выполняться.при обновлении значений хеш-таблицы - PullRequest
0 голосов
/ 18 января 2011

это исключение кода, когда я пытаюсь обновить значение, сначала обновляется только значение, а затем выдается исключение «Коллекция была изменена; операция перечисления может не выполняться».!!!!

        Hashtable hh = new Hashtable();
        hh.Add("val 1",null);
        hh.Add("val 2", null);

        foreach (string dd in hh.Keys)
        {
            hh[dd] = "some_value";
           // MessageBox.Show(dd.Value.ToString());
        }

Мне нужно обновить пустые значения в хеш-таблицах или любой эквивалентной структуре, которая имеет [ключ, значение] ??

1 Ответ

1 голос
/ 18 января 2011

Вам нужно сделать копию hh.Keys, потому что вы пытаетесь изменить Hashtable, который является недопустимой операцией при перечислении его ключей в цикле foreach.

Попробуйте этот код

foreach (string dd in new List<object>(hh.Keys.Cast<object>()))
{
    hh[dd] = "some_value";
    MessageBox.Show(dd);
}
...