Why doesn't the Dictionary class have logic to move an object to the correct bucket when it detects that the object's hashcode has changed?
Per sicurezza, stiamo parlando dell'hash del key qui, l'hash del valore è irrilevante.
La parte importante del tuo commento è: [...] quando rileva che l'hashcode dell'oggetto è cambiato. ... ma come?
- L'iterazione continua di tutte le voci nel dizionario sarebbe sia inefficiente che non thread-safe.
- L'altra opzione prevede che per ogni possibile chiave, è necessario aggiungere un meccanismo di un listener per attivare un evento quando il valore della chiave / codice hash cambia. Sarebbe davvero un PITA e anche inefficiente.
Poiché è piuttosto raro che tu debba modificare le chiavi nel tuo dizionario, è molto più facile ed efficiente rimuovere la voce con la vecchia chiave e aggiungerla di nuovo con la nuova chiave.