Udostępnij przez


Wymuszono limit rozmiaru struktury tablicy inline

Atrybut InlineArrayAttribute został wprowadzony na platformie .NET 8 w celu dodawania adnotacji do typów struktur, które mają jedno pole. Wbudowane struktury tablicowe miały limit rozmiaru 1 mebibajtu (MiB). Jednak ze względu na usterkę limit nie został wymuszony dla wbudowanych struktur tablicy, które mają układ sekwencyjny, który jest również domyślnym układem emitowanym przez język C#. Ta zmiana wymusza limit rozmiaru.

Poprzednie zachowanie

Na platformie .NET 8 można zadeklarować śródliniową strukturę tablicy z dowolnym dodatnim, niezerowym rozmiarem. W skrajnych przypadkach efektywna wielkość była nieprzewidywalna. Na przykład struktura, której rozmiar został zadeklarowany jako Int32.MaxValue + 1, ostatecznie miał rozmiar 1 z powodu zawijania wartości.

Nowe zachowanie

Począwszy od platformy .NET 9, limit rozmiaru 1 miB jest wymuszany.

Wersja wprowadzona

.NET 9 (wersja zapoznawcza 1)

Typ zmiany przełamującej

Ta zmiana jest zmianą behawioralną.

Przyczyna zmiany

Ta zmiana naprawia usterkę w implementacji, w której limit rozmiaru nie został wymuszony.

Jeśli masz kod, który używa wbudowanych struktur tablic z bardzo dużymi wystąpieniami przekraczającymi limit, zmniejsz rozmiar tych struktur.

Interfejsy API, których dotyczy problem