Freigeben über


Angeben der expliziten Strukturgröße, die mit InlineArray nicht zulässig ist

Die explizite Size Anwendung auf eine struktur, die mit InlineArrayAttribute mehrdeutig versehen ist, wird im Typladeprogramm nicht mehr unterstützt. Zuvor würde die Angabe expliziter Size Verhaltensweisen zu implementierungsspezifischen Verhaltensweisen führen, die den Erwartungen der Benutzer möglicherweise entsprechen oder nicht entsprechen.

Eingeführt in Version

.NET 10

Vorheriges Verhalten

Zuvor wurde die Angabe Size einer mit einer struktur versehenen InlineArrayAttribute Struktur zulässig, führte jedoch zu implementierungsspezifischem Verhalten, das möglicherweise den Erwartungen des Benutzers entspricht oder nicht.

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

Neues Verhalten

Ab .NET 10 ist die Angabe Size einer mit einer struktur versehenen InlineArrayAttribute Struktur unzulässig. Wenn Sie versuchen, eine Instanz einer solchen Struktur zu erstellen, erhalten Sie eine TypeLoadException.

Art der einschneidenden Änderung

Diese Änderung kann sich auf die Binäre Kompatibilität auswirken.

Grund für Änderung

Die Angabe Size einer Inlinearraystruktur ist mehrdeutig, und jede Auslegung würde der Spezifikation widersprechen.

Im unwahrscheinlichen Fall müssen Sie explizite Größe entweder für das Arrayelement oder für das gesamte Inlinearray angeben, indem Sie einen Strukturumbruch des Elementtyps oder des gesamten Arraytyps einführen. Geben Sie im Layout des Wrappers entsprechend an Size .

Betroffene APIs

  • Typladeprogramm