Указание явного размера структуры запрещено в InlineArray

Применение явного Size к структуре с атрибутом InlineArrayAttribute неоднозначно и больше не поддерживается загрузчиком типов. Ранее явное указание Size приводило к поведению, зависящему от реализации, которое могло соответствовать или не соответствовать ожиданиям пользователей.

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

.NET 10

Предыдущее поведение

Ранее было разрешено указывать Size на структуре, украшенной InlineArrayAttribute, но это приводило к поведению, зависящему от конкретной реализации, которое могло не совпадать с ожиданиями пользователей.

[InlineArray(8)]
[StructLayout(LayoutKind.Explicit, Size=32)]
struct Int8InlineArray
{
    private int _value;
}

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

Начиная с .NET 10, использование Size на структуре, декорированной InlineArrayAttribute, запрещено. При попытке создать экземпляр такой структуры вы получите TypeLoadException.

Тип разрушающего изменения

Это изменение может повлиять на совместимость двоичных файлов.

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

Указание Size структуры встроенного массива неоднозначно, и любая интерпретация будет противоречить спецификации.

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

Затронутые API

  • Загрузчик классов