Condividi tramite


Viene applicato il limite di dimensioni degli struct della matrice inline

L'attributo InlineArrayAttribute è stato introdotto in .NET 8 per annotare i tipi di struct con un singolo campo. Gli struct di matrice inline hanno un limite di dimensioni pari a 1 MiB. Tuttavia, a causa di un bug, il limite non è stato applicato per gli struct di matrice inline con layout sequenziale, che è anche il layout predefinito generato da C#. Questa modifica applica il limite di dimensioni.

Comportamento precedente

In .NET 8, è possibile dichiarare uno struct di matrice inline con qualsiasi dimensione positiva e diversa da zero. In casi estremi, le dimensioni effettive erano imprevedibili. Ad esempio, uno struct la cui dimensione è stata dichiarata come Int32.MaxValue + 1, finisce per avere una dimensione pari a 1 a causa del wrapping.

Nuovo comportamento

A partire da .NET 9, viene applicato il limite di dimensioni pari a 1 MiB.

Versione di introduzione

.NET 9 Anteprima 1

Tipo di modifica che causa un'interruzione

Questa è una modifica funzionale.

Motivo della modifica

Questa modifica corregge un bug nell'implementazione in cui il limite di dimensioni non è stato applicato.

Se si dispone di codice che usa struct di matrice inline con istanze molto grandi che superano il limite, ridurre le dimensioni di tali struct.

API interessate