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

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

旧行为

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

新行为

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

引入的版本

.NET 9 预览版 1

中断性变更的类型

此更改为行为更改

更改原因

此更改修复了实现中的一个 bug,即大小限制没有强制实施。

如果你的代码使用内联数组结构且具有超出限制的非常大的实例,请减小这些结构的大小。

受影响的 API