Condividi tramite


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.

Gli autori della libreria devono implementare sia Equals(Object) sia GetHashCode() in tutti i tipi contrassegnati con InlineArrayAttribute.

API interessate