Partilhar via


Padrão Equals() e GetHashCode() lançamento para tipos marcados com InlineArrayAttribute

O comportamento padrão para Equals(Object) e GetHashCode() em tipos marcados com InlineArrayAttribute agora é lançar um NotSupportedExceptionarquivo . Os autores da biblioteca devem substituir esses dois métodos se não forem lançados.

Comportamento anterior

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

Novo comportamento

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

Versão introduzida

.NET 9 Visualização 6

Tipo de mudança de rutura

Esta mudança é uma mudança comportamental.

Razão para a alteração

O comportamento atual é incorreto para determinar a igualdade e calcular 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 da biblioteca devem implementar ambos e Equals(Object) GetHashCode() em todos os tipos marcados com InlineArrayAttribute.

APIs afetadas