Equals()
e GetHashCode()
predefiniti generano un’eccezione per i tipi contrassegnati con InlineArrayAttribute
Il comportamento predefinito per Equals(Object) e GetHashCode() sui tipi contrassegnati con InlineArrayAttribute consiste ora nel generare un’eccezione NotSupportedException. Gli autori di librerie devono eseguire l’override di questi due metodi se si prevede di non generare un’eccezione.
Comportamento precedente
In precedenza, le implementazioni predefinite usavano solo il campo ref
del segnaposto durante il calcolo di uguaglianza o del codice hash.
Nuovo comportamento
A partire da .NET 9, viene sempre generata un’eccezione NotSupportedException dalle implementazioni predefinite per Equals(Object) e GetHashCode() quando InlineArrayAttribute viene applicato a un tipo.
Versione introdotta
.NET 9 Anteprima 6
Tipo di modifica che causa un'interruzione
Questa è una modifica funzionale.
Motivo della modifica
Il comportamento corrente non è corretto sia per determinare l’uguaglianza sia per il calcolo del codice hash e gli utenti vengono guidati verso un falso senso di correttezza quando chiamano queste funzioni.
Azione consigliata
Gli autori della libreria devono implementare sia Equals(Object) sia GetHashCode() in tutti i tipi contrassegnati con InlineArrayAttribute.