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.
Azione consigliata
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.