В чем разница между прокладкой и полифилом?

Как

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

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

Почему

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

372
задан hippietrail 20 August 2012 в 20:33
поделиться