Изменить значения словаря - PullRequest
0 голосов
/ 19 июня 2010

.NET 2

Стандарт:

  foreach(KeyValuePair<int,int> entry in MyDic)
  {
      entry.Value += i; // does not work :(
      i++;
  }

Рекомендации?

1 Ответ

4 голосов
/ 19 июня 2010

Вместо этого зацикливайте свойство Keys.Когда вы используете перечислители, любая модификация базовой коллекции делает недействительным перечислитель при следующем вызове MoveNext.

. Вы можете перечислить Keys или AllKeys (это просто строковый массив) и изменитьзначения, на которые они указывают достаточно безопасно.

Кроме того, свойства KeyValuePair<K, V> сами по себе доступны только для чтения, поэтому, итераторные блоки или нет, нет обстоятельств, при которых вы могли бы изменить эти значения без злоупотребления отражением.*

...