C # Эквивалент Java IdentityHashMap - PullRequest
11 голосов
/ 08 мая 2009

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

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

1 Ответ

18 голосов
/ 08 мая 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...