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