O limite de tamanho da estrutura da matriz embutida é aplicado

O atributo InlineArrayAttribute foi introduzido no .NET 8 para anotar tipos de struct que têm um único campo. Os structs de matriz embutida destinavam-se a ter um limite de tamanho de 1 mebibyte (MiB). No entanto, devido a um bug, o limite não foi imposto para structs de matriz embutida que têm um layout sequencial, que também é o layout padrão, conforme emitido por C#. Essa alteração impõe o limite de tamanho.

Comportamento anterior

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

Novo comportamento

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

Versão introduzida

Versão prévia 1 do .NET 9

Tipo de alteração interruptiva

Esta é uma alteração comportamental.

Motivo da alteração

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

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

APIs afetadas