С# эквивалент Java IdentityHashMap

Насколько я знаю, в С# нет прямого эквивалента. Моя нынешняя идея - использовать словарь с пользовательским IEqualityComparer, который проверяет ссылочное равенство.

Однако это, похоже, теряет преимущество, полученное хешированием. Есть ли способ получить индивидуальный хэш-код из каждого другого объекта? Или это невозможно, и я должен использовать другой подход?

Ответ 1

Вы можете использовать RuntimeHelpers.GetHashCode(object), который вызывает object.GetHashCode() не виртуально - это эквивалент System.identityHashcode в Java. Я думаю, что ты за тобой. Таким образом, ваш IEqualityComparer просто использовал бы для хэширования и object.ReferenceEquals для равенства.