Partilhar via


O limite de tamanho da estrutura da matriz embutida é imposto

O InlineArrayAttribute atributo foi introduzido no .NET 8 para anotar tipos struct que têm um único campo. As estruturas de matriz em linha foram concebidas para ter um limite de tamanho de 1 mebibyte (MiB). No entanto, devido a um bug, o limite não foi imposto para estruturas de matriz embutidas que têm um layout sequencial, que também é o layout padrão emitido pelo C#. Esta alteração impõe o limite de tamanho.

Comportamento anterior

No .NET 8, você pode declarar uma estrutura de matriz embutida com qualquer tamanho positivo diferente de zero. Em casos extremos, o tamanho efetivo era imprevisível. Por exemplo, uma struct cujo tamanho foi declarado como Int32.MaxValue + 1 acabou tendo um tamanho de 1 devido ao wrap-around.

Novo comportamento

A partir do .NET 9, o limite de tamanho de 1 MiB é imposto.

Versão introduzida

.NET 9 Visualização 1

Tipo de mudança de rutura

Esta mudança é uma mudança comportamental.

Razão para a alteração

Essa alteração corrige um bug na implementação em que o limite de tamanho não foi aplicado.

Se você tiver um código que usa estruturas de matriz embutidas com instâncias muito grandes que excedem o limite, reduza o tamanho dessas estruturas.

APIs afetadas