次の方法で共有


インライン配列構造体のサイズ制限が適用される

InlineArrayAttribute属性は、1 つのフィールドを持つ構造体型に注釈を付けるために.NET 8 で導入されました。 インライン配列構造体は、サイズ制限が 1 メビバイト (MiB) であることを意図していました。 ただし、バグのため、シーケンシャル レイアウトを持つインライン配列構造体には制限が適用されませんでした。これは、C# によって出力される既定のレイアウトでもあります。 この変更により、サイズ制限が適用されます。

以前の動作

.NET 8 では、正の 0 以外のサイズのインライン配列構造体を宣言できます。 極端なケースでは、有効なサイズは予測不可能でした。 たとえば、サイズが Int32.MaxValue + 1 として宣言された構造体は、ラップアラウンドのために 1 のサイズになります。

新しい動作

.NET 9 以降では、1 MiB のサイズ制限が適用されます。

導入されたバージョン

.NET 9 Preview 1

破壊的変更の種類

この変更は 動作の変更です。

変更の理由

この変更により、サイズ制限が適用されなかった実装のバグが修正されます。

制限を超えるインスタンスが非常に大きいインライン配列構造体を使用するコードがある場合は、これらの構造体のサイズを小さくします。

影響を受ける API