Короткий вопрос: Как получить значение object.GetHashCode()
для объекта, который повторно реализовал GetHashCode()
?
Длинная история: Итак, яиметь около ста тысяч объектов, каждый из которых имеет много общих строк (не во время компиляции).Обычно, если значение равно, это один и тот же экземпляр.
Зная это, я полагаю, что я предпочел бы использовать стандартное сравнение объектов (ReferenceEquals
), а не полное сравнение строк - особенно этоищутся в словарях довольно регулярно.
Так что я объявляю class ReferenceEqualityComparer : IEqualityComparer
для использования с Dictionary<string, TValue>
, полагая, что это было бы полезно иметь в любом случае, и попытался реализовать дваметоды.
Равно достаточно просто, используйте object.ReferenceEquals
.
Но как мне получить эквивалент object.GetHashCode()
для метода GetHashCode
?
, то есть какполучить какое-либо представление экземпляра объекта?
Я знаю, что есть и другие способы сделать это - создать класс InternedString
, который содержит ссылку на string
, но не реализует Equals
или GetHashCode
, или хранить индексы, а не строки с каждым объектом, но мне теперь любопытно - есть ли способ реализовать универсальный ReferenceEqualityComparer
?