インライン配列構造体のサイズ制限が適用される
InlineArrayAttribute 属性は、単一のフィールドを持つ構造体の型に注釈を付けるために、.NET 8 で導入されました。 インライン配列構造体は、1 メビバイト (MiB) のサイズ制限があることが意図されていました。 ただし、バグにより、シーケンシャル レイアウトを持つインライン配列構造体には制限が適用されませんでした。これは、C# によって出力される既定のレイアウトでもあります。 この変更により、サイズ制限が適用されます。
以前の動作
.NET 8 では、0 以外の任意の正のサイズのインライン配列構造体を宣言できました。 極端なケースでは、有効なサイズは予測不可能でした。 たとえば、サイズが Int32.MaxValue + 1
と宣言された構造体のサイズが、ラップアラウンドによって 1 になったとします。
新しい動作
.NET 9 以降では、1 MiB のサイズ制限が適用されます。
導入されたバージョン
.NET 9 Preview 1
破壊的変更の種類
この変更は、動作変更です。
変更理由
この変更により、サイズ制限が適用されなかった実装のバグが修正されます。
推奨される操作
制限を超える非常に大きいインスタンスを持つインライン配列構造体を使用するコードがある場合は、これらの構造体のサイズを小さくしてください。
影響を受ける API
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET