Compartir a través de


Valor predeterminado Equals() y GetHashCode() se inicia para los tipos marcados con InlineArrayAttribute

El comportamiento predeterminado de Equals(Object) y GetHashCode() en los tipos marcados con InlineArrayAttribute ahora es iniciar un NotSupportedException. Los autores de bibliotecas deben invalidar estos dos métodos si se espera que no se produzcan.

Comportamiento anterior

Anteriormente, las implementaciones predeterminadas solo usaban el campo de marcador de posición ref al calcular la igualdad o el código hash.

Comportamiento nuevo

A partir de .NET 9, siempre se produce un NotSupportedException a partir de las implementaciones predeterminadas de Equals(Object) y GetHashCode() cuando se aplica InlineArrayAttribute a un tipo.

Versión introducida

.NET 9 Versión preliminar 6

Tipo de cambio importante

Este es un cambio de funcionamiento.

Motivo del cambio

El comportamiento actual es incorrecto para determinar la igualdad y calcular el código hash, y los usuarios se llevan a una falsa sensación de corrección al llamar a estas funciones.

Los autores de bibliotecas deben implementar Equals(Object) y GetHashCode() en todos los tipos marcados con InlineArrayAttribute.

API afectadas