次の方法で共有


InlineArray で許可されていない明示的な構造体サイズの指定

Sizeで修飾された構造体に明示的なInlineArrayAttributeを適用することはあいまいであり、型ローダーではサポートされなくなりました。 以前は、明示的な Size を指定すると、実装固有の動作が発生し、ユーザーの期待と一致しない場合がありました。

導入されたバージョン

.NET 10

以前の動作

以前は、Sizeで修飾された構造体にInlineArrayAttributeを指定することは許可されていましたが、実装固有の動作が発生し、ユーザーの期待に一致する場合と一致しない可能性がありました。

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

新しい動作

.NET 10 以降では、Sizeで修飾された構造体のInlineArrayAttributeを指定することはできません。 このような構造体のインスタンスを作成しようとすると、 TypeLoadExceptionが得られます。

破壊的変更の種類

この変更は 、バイナリの互換性に影響する可能性があります。

変更の理由

インライン配列構造体に Size を指定することはあいまいであり、解釈は仕様と矛盾します。

万が一、配列要素またはインライン配列全体に明示的なサイズを指定する必要がある場合は、要素型または配列型全体をラップする構造体を導入します。 ラッパーのレイアウトで、それに応じて Size を指定します。

影響を受ける API

  • 型ローダー