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 - это один и тот же объект. Почему тогда исключение?