Udostępnij za pośrednictwem


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.

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

Dotyczy interfejsów API