Как определить, была ли коллекция изменена во время итерации - PullRequest
2 голосов
/ 05 апреля 2019

Итерируя по словарю, списку или какой-либо другой коллекции, могу ли я каким-либо образом проверить, была ли коллекция изменена?

foreach (var pair in dictionary) {
   DoStuff(pair);
   if (DictionaryWasModified())
      break;
}

Если DoStuff добавить / удалить из словаря, исключение будетбыть поднятым на следующем шаге итерации.Я хочу избежать исключения.

1 Ответ

0 голосов
/ 05 апреля 2019

Словарь и его итератор хранят информацию о том, изменилась ли коллекция со времени последней итерации, поэтому вы не можете получить к ней доступ.Если вы хотите иметь возможность безопасно перебирать коллекцию во время ее мутации или знать, изменилась ли она с момента начала итерации, вам нужно создать свою собственную коллекцию (предположительно оборачивая существующую коллекцию), в которойвы сами отслеживаете, изменилось ли оно, и публикуете эту информацию публично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...