Udostępnij przez


Określanie jawnego rozmiaru struktury niedozwolonego za pomocą metody InlineArray

Zastosowanie jawne Size do struktury ozdobionej elementem InlineArrayAttribute jest niejednoznaczne i nie jest już obsługiwane w module ładującym typu. Wcześniej określenie jawne Size spowodowałoby zachowanie specyficzne dla implementacji, które może lub może nie odpowiadać oczekiwaniom użytkownika.

Wersja wprowadzona

.NET 10

Poprzednie zachowanie

Wcześniej określanie Size dla struktury oznaczonej atrybutem InlineArrayAttribute było dozwolone, ale powodowało zachowanie specyficzne dla implementacji, które może lub nie musi odpowiadać oczekiwaniom użytkownika.

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

Nowe zachowanie

Od .NET 10, ustawianie Size na strukturze ozdobionej atrybutem InlineArrayAttribute jest niedozwolone. Jeśli spróbujesz utworzyć wystąpienie takiej struktury, otrzymasz element TypeLoadException.

Typ zmiany przełamującej

Ta zmiana może mieć wpływ na zgodność binarną.

Przyczyna zmiany

Określenie Size dla wbudowanej struktury tablicy jest niejednoznaczne, a każda interpretacja byłaby sprzeczna ze specyfikacją.

W mało prawdopodobnym przypadku, gdy trzeba określić jawny rozmiar dla elementu tablicy lub dla całej tablicy wbudowanej, wprowadź strukturę opakowującą typ elementu lub cały typ tablicy. W układzie wrappera określ odpowiednie ustawienie Size.

Interfejsy API, których dotyczy problem

  • Ładowarka typu