Come ottenere il codice hash grezzo da una classe che reimpleisce GethashCode?
-
30-10-2019 - |
Domanda
Breve domanda: Come ottengo il object.GetHashCode()
Valore per un oggetto che è stato reimpostato GetHashCode()
?
Lunga storia:Quindi ho circa centomila oggetti, ognuno condividendo molte stringhe comuni (tempo non concile). Comune come in se il valore è uguale, è la stessa istanza.
Sapendo questo, immagino che preferirei usare un confronto di oggetti standard (ReferenceEquals
) piuttosto che un confronto a corda completa, in particolare perché questi sono cercati nei dizionari su base abbastanza regolare.
Quindi dichiaro un class ReferenceEqualityComparer : IEqualityComparer
da usare con a Dictionary<string, TValue>
, immaginando che sarebbe utile avere comunque e cercare di implementare i due metodi.
Uguali è abbastanza facile, usa object.ReferenceEquals
.
Ma come ottengo l'equivalente di object.GetHashCode()
per il GetHashCode
metodo?
cioè come posso ottenere una rappresentazione dell'istanza di un oggetto?
So che ci sono altri modi in cui posso fare questo: crea un InternedString
classe che contiene un riferimento al string
, ma non implementa Equals
o GetHashCode
, o archiviare indici piuttosto che stringhe con ogni oggetto, ma ora sono curioso - c'è davvero un modo per implementare un generico ReferenceEqualityComparer
?
Nessuna soluzione corretta