Оператор foreach в следующем коде создает исключение InvalidOperationException, говорящее: «Коллекция была изменена. Операция перечисления не может быть выполнена». Я не понимаю, как это возможно, поскольку цвета никогда не могут быть изменены после инициализации.
Dictionary<Color, int> colorDictionary = new Dictionary<Color, int>();
//Put stuff in colorDictionary...
int currentBest = 257;
Color replaceColor = Color.Empty;
Dictionary<Color, int>.KeyCollection colors = colorDictionary.Keys;
foreach (Color c in colors)
{
if (colorDictionary[c] == 0)
{
continue;
}
if (ColorDistance(color, c) < currentBest)
{
replaceColor = c;
colorDictionary[c]--;
}
}