Partager via


Spécification d’une taille de struct explicite non autorisée avec InlineArray

L’application explicite de Size à une structure ornée de InlineArrayAttribute est ambiguë et n’est plus prise en charge dans le chargeur de types. Auparavant, la spécification explicite Size entraînerait un comportement spécifique à l’implémentation susceptible ou non de correspondre aux attentes des utilisateurs.

Version introduite

.NET 10

Comportement précédent

Précédemment, la spécification Size d’un struct décoré avec InlineArrayAttribute a été autorisée, mais a entraîné un comportement spécifique à l’implémentation qui peut ou ne pas correspondre aux attentes des utilisateurs.

[InlineArray(8)]
[StructLayout(LayoutKind.Explicit, Size=32)]
struct Int8InlineArray
{
    private int _value;
}

Nouveau comportement

À compter de .NET 10, la spécification Size d’un struct décoré avec InlineArrayAttribute n’est pas autorisée. Si vous tentez de créer une instance de ce type de struct, vous obtiendrez un TypeLoadException.

Type de changement cassant

Cette modification peut affecter la compatibilité binaire.

Raison de la modification

Le fait de spécifier une structure de tableau en ligne Size est ambigu et n'importe quelle interprétation contredirait la spécification.

Dans le cas peu probable, vous devez spécifier une taille explicite pour l’élément de tableau ou pour l’ensemble du tableau inline, introduisez un struct encapsulant le type d’élément ou le type de tableau entier. Dans la disposition du wrapper, spécifiez Size en conséquence.

API affectées

  • Chargeur de type