С# эквивалент Java IdentityHashMap
Насколько я знаю, в С# нет прямого эквивалента. Моя нынешняя идея - использовать словарь с пользовательским IEqualityComparer, который проверяет ссылочное равенство.
Однако это, похоже, теряет преимущество, полученное хешированием. Есть ли способ получить индивидуальный хэш-код из каждого другого объекта? Или это невозможно, и я должен использовать другой подход?
Ответы
Ответ 1
Вы можете использовать RuntimeHelpers.GetHashCode(object)
, который вызывает object.GetHashCode()
не виртуально - это эквивалент System.identityHashcode
в Java. Я думаю, что ты за тобой. Таким образом, ваш IEqualityComparer
просто использовал бы для хэширования и object.ReferenceEquals
для равенства.