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.
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.
A partir do .NET 9, o limite de tamanho de 1 MiB é imposto.
Versão prévia 1 do .NET 9
Esta é uma alteração comportamental.
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.
Comentários do .NET
O .NET é um projeto código aberto. Selecione um link para fornecer comentários: