强制实施内联数组结构大小限制

InlineArrayAttribute 属性是在 .NET 8 中引入的,用于批注具有单个字段的结构类型。 内联数组结构本来具有 1 mebibyte (MiB) 的大小限制。 但是,由于一个 bug,具有顺序布局的内联数组结构没有强制实施该限制,而该布局也是 C# 发出的默认布局。 此更改强制实施大小限制。

以前的行为

在 .NET 8 中,可以声明具有任何正非零大小的内联数组结构。 在极端情况下,有效大小不可预知。 例如,一个结构体的大小声明为 Int32.MaxValue + 1,但由于环绕现象,其最终大小为 1。

新行为

从 .NET 9 开始,强制实施大小限制 1 MiB。

已引入的版本

.NET 9 预览版 1

破坏性变更的类型

此更改为行为更改

更改原因

此更改修复了未强制实施大小限制的实现中的 bug。

如果代码使用内联数组结构且实例超过限制,请减小这些结构的大小。

受影响的 API