Delen via


Expliciete structgrootte opgeven die niet is toegestaan met InlineArray

Het toepassen van expliciete Size op een struct gevoed met InlineArrayAttribute is dubbelzinnig en wordt niet meer ondersteund in de type lader. Voorheen zou het opgeven van expliciete Size resultaten resulteren in implementatiespecifiek gedrag dat al dan niet overeenkomt met gebruikersverwachtingen.

Geïntroduceerde versie

.NET 10

Vorig gedrag

Eerder was het toegestaan om Size op een struct die met InlineArrayAttribute is gedecoreerd op te geven, maar dit resulteerde in implementatiespecifiek gedrag dat mogelijk niet overeenkomt met de verwachtingen van de gebruiker.

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

Nieuw gedrag

Vanaf .NET 10 is het specificeren op een struct met Size niet toegestaan. Als u probeert een exemplaar van een dergelijke struct te maken, krijgt u een TypeLoadException.

Type van brekende verandering

Deze wijziging kan van invloed zijn op binaire compatibiliteit.

Reden voor wijziging

Het specificeren van Size voor een inline arraystructuur is dubbelzinnig en elke interpretatie zou in strijd zijn met de specificatie.

In het onwaarschijnlijke geval dat u een expliciete grootte moet opgeven voor een element van de array of voor de hele inline array, introduceer een struct die het elementtype of het hele arraytype verpakt. Geef Size dienovereenkomstig op in de indeling van de wrapper.

Betreffende API's

  • Type laadprogramma