KeyNotFoundException, пока ключ присутствует

Я использую словарь parentDict с MyClass введите как ключ, который не имеет переопределения поведения Equals, и при этом я не использую пользовательский компаратор равенства в словаре. Все однопоточное.

Теперь я делаю следующее:

var newDict = new Dictionary<MyClass, otherClass>();
foreach (var item in items.OfType<MyClass>().ToArray())
     newDict.Add(item, parentDict[item]);

Однако это вызывает исключение KeyNotFoundException на parentDict[item], Я сделал следующее при остановке отладчика в ближайшем окне:

var item2 = parentDict.First().Key;
ReferenceEquals(item, item2)

Это возвращает true (Я подтвердил, что этот пункт действительно является первым в словаре). Насколько я знаю, словарь должен использовать ссылку в качестве ключевого компаратора, и он показывает, что item и item2 - это один и тот же объект. Почему тогда исключение?

0 ответов

Другие вопросы по тегам