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ě.