Compartilhar via


Lançamento padrão Equals() e GetHashCode() para tipos marcados com InlineArrayAttribute

O comportamento padrão para Equals(Object) e GetHashCode() em tipos marcados com InlineArrayAttribute agora é lançar um NotSupportedException. Os autores de bibliotecas devem substituir esses dois métodos se for esperado que eles não sejam lançados.

Comportamento anterior

Anteriormente, as implementações padrão usavam apenas o campo de espaço reservado ref computando a igualdade ou o código hash.

Novo comportamento

A partir do .NET 9, um NotSupportedException é sempre lançado a partir das implementações padrão de Equals(Object) e GetHashCode() quando InlineArrayAttribute é aplicado a um tipo.

Versão introduzida

.NET 9 Preview 6

Tipo de alteração interruptiva

Esta é uma alteração comportamental.

Motivo da alteração

O comportamento atual é incorreto tanto para determinar a igualdade quanto para computar o código hash, e os usuários são levados a uma falsa sensação de correção ao chamar essas funções.

Os autores de bibliotecas devem implementar Equals(Object) e GetHashCode() em todos os tipos marcados com InlineArrayAttribute.

APIs afetadas