强制实施内联数组结构大小限制
InlineArrayAttribute 属性是在 .NET 8 中引入的,用于注释具有单个字段的结构类型。 内联数组结构本来具有 1 mebibyte (MiB) 的大小限制。 但是,由于一个 bug,具有顺序布局的内联数组结构没有强制实施该限制,而该布局也是 C# 发出的默认布局。 此更改将强制实施大小限制。
旧行为
在 .NET 8 中,可以声明具有任何正非零大小的内联数组结构。 在极端情况下,有效大小不可预知。 例如,由于环绕,大小被声明为 Int32.MaxValue + 1
的结构最终大小会变成 1。
新行为
从 .NET 9 开始,强制实施 1 MiB 的大小限制。
引入的版本
.NET 9 预览版 1
中断性变更的类型
此更改为行为更改。
更改原因
此更改修复了实现中的一个 bug,即大小限制没有强制实施。
建议的操作
如果你的代码使用内联数组结构且具有超出限制的非常大的实例,请减小这些结构的大小。