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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top