Sdílet prostřednictvím


CA1900: Pole hodnot by měla být přenosná

Název_typu

ValueTypeFieldsShouldBePortable

CheckId

CA1900

Kategorie

Microsoft.Portability

Změnit rozdělení

Rozdělení - pole lze vidět mimo sestavení.

Bez konce - Pokud pole není viditelný vně sestavení.

Příčina

Toto pravidlo se zkontroluje, že struktur, které jsou deklarovány pomocí explicitní rozložení bude správně zarovnány, když zařadit, nespravovaný kód na 64bitové operační systémy.IA-64 neumožňuje přistupuje nezarovnané paměti a proces bude crash, pokud není stanovena tohoto porušení.

Popis pravidla

Struktury, které mají explicitní rozložení, které obsahuje příčinu selhání nezarovnané polí na 64bitové operační systémy.

Jak opravit porušení

Všechna pole, které jsou menší než 8 bajtů musí mít pořadová čísla, které jsou násobkem velikosti a pole 8 bajtů nebo více musí mít pořadová čísla, které jsou násobkem 8.Dalším řešením je použít LayoutKind.Sequential namísto LayoutKind.Explicit, pokud je to přiměřené.

Při potlačení upozornění

Toto upozornění mají být potlačeny, pouze pokud dojde k chybě.