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