Поделиться через


Ограничение размера структуры встроенного массива применяется

Атрибут InlineArrayAttribute был представлен в .NET 8 для анотации типов структур с одним полем. Встроенные структуры массива предназначены для ограничения размера 1 mebibyte (MiB). Однако из-за ошибки ограничение не было применено для встроенных структур массива, имеющих последовательный макет, который также является макетом по умолчанию, создаваемым C#. Это изменение применяет ограничение размера.

Прежнее поведение

В .NET 8 можно объявить структуру встроенного массива с любым положительным, ненулевым размером. В крайних случаях действующий размер был непредсказуемым. Например, структуру, размер которой был объявлен как Int32.MaxValue + 1 в конце концов, имеет размер 1 из-за оболочки вокруг.

Новое поведение

Начиная с .NET 9, применяется ограничение размера 1 МиБ.

Представленные версии

.NET 9( предварительная версия 1)

Тип критического изменения

Это изменение поведения.

Причина изменения

Это изменение исправляет ошибку в реализации, в которой ограничение размера не было применено.

Если у вас есть код, использующий встроенные структуры массива с очень большими экземплярами, превышающими ограничение, уменьшите размер этих структур.

Затронутые API