Wymuszono limit rozmiaru struktury tablicy wbudowanej
Atrybut InlineArrayAttribute został wprowadzony na platformie .NET 8 w celu dodawania adnotacji do typów struktur, które mają jedno pole. Wbudowane struktury tablic 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
zakończony o rozmiarze 1 z powodu zawijania wokół.
Nowe zachowanie
Począwszy od platformy .NET 9, limit rozmiaru 1 miB jest wymuszany.
Wprowadzona wersja
.NET 9 (wersja zapoznawcza 1)
Typ zmiany powodującej niezgodność
Ta zmiana jest zmianą behawioralną.
Przyczyna wprowadzenia zmiany
Ta zmiana naprawia usterkę w implementacji, w której limit rozmiaru nie został wymuszony.
Zalecana akcja
Jeśli masz kod, który używa wbudowanych struktur tablic z bardzo dużymi wystąpieniami przekraczającymi limit, zmniejsz rozmiar tych struktur.