強制執行內嵌陣列結構大小限制
在 .NET 8 中已引進 InlineArrayAttribute 屬性,以標註具有單一欄位的結構類型。 內嵌陣列結構的目的是具備 1 MiB 的大小限制。 不過,由於錯誤,內嵌陣列結構沒有強制執行限制,內嵌陣列結構具有循序配置,這也是 C# 發出的預設配置。 這項變更會強制執行大小限制。
先前的行為
在 .NET 8 中,您可以宣告內嵌陣列結構,其中包含任何正數、非零大小。 在極端情況下,有效大小是無法預測的。 例如,因為循環使用,其大小宣告為 Int32.MaxValue + 1
的結構最終大小為 1。
新的行為
從 .NET 9 開始,會強制執行 1 MiB 的大小限制。
導入的版本
.NET 9 Preview 1
中斷性變更的類型
此變更為行為變更。
變更原因
這項變更修正了實作中未強制執行大小限制的錯誤。
建議的動作
如果您有使用內嵌陣列結構的程式碼,而內嵌陣列結構具有超過限制的大型執行個體,請減少這些結構的大小。