Мне нужно изменить все значения в словаре. Как правило, изменение словаря при перечислении его вызывает исключение. Существует множество способов обойти это, но все ответы, которые я видел, связаны с распределением временного хранилища. См. Пример Editing dictionary values in a foreach loop.Изменить значения словаря без выделения
Я хотел бы изменить все значения без выделения памяти. Написание настраиваемого перечислителя структуры для значений, которые не учитывали версию словаря, было бы неплохо, но поскольку все важные члены словаря являются частными, это кажется невозможным.
Любые причины, по которым вы не хотите использовать 'ConcurrentDictionary'? Является ли ваша проблема действительно исключением для параллельного доступа или распределения памяти? –
Ссылка, которую вы указали, указывает на то, что вызов Keys.ToList() в словаре и итерация по этому списку должны работать ... Нет? –
@IanMercer: Хотя вопрос очень неясен. Я считаю, что исключение, на которое ссылается OP, - это тот, который модифицирует коллекцию при ее итерации. Это не проблема с одновременным доступом. –