PackingSize Výčet

Definice

Určuje jeden ze dvou faktorů, které určují zarovnání paměti polí při zařazování typu.

Tento výčet podporuje bitové kombinace hodnot jeho členů.

public enum class PackingSize
public enum PackingSize
[System.Flags]
[System.Serializable]
public enum PackingSize
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum PackingSize
type PackingSize = 
[<System.Flags>]
[<System.Serializable>]
type PackingSize = 
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PackingSize = 
Public Enum PackingSize
Dědičnost
PackingSize
Atributy

Pole

Size1 1

Velikost balení je 1 bajt.

Size128 128

Velikost balení je 128 bajtů.

Size16 16

Velikost balení je 16 bajtů.

Size2 2

Velikost balení je 2 bajty.

Size32 32

Velikost balení je 32 bajtů.

Size4 4

Velikost balení je 4 bajty.

Size64 64

Velikost balení je 64 bajtů.

Size8 8

Velikost balení je 8 bajtů.

Unspecified 0

Velikost balení není zadána.

Poznámky

Velikost balení má vliv na zarovnání polí ve strukturách a třídách, jejichž uspořádání je LayoutKind.Sequential. Velikost balení je jedním ze dvou faktorů, které určují posun pole při zařazování struktury nebo třídy; dalším faktorem je efektivní velikost pole. Určení posunu pole:

  1. Výpočet minimální hodnoty posunu přidáním velikosti předchozího pole k posunu předchozího pole.

  2. Výpočet přirozené velikosti balení pole: Pokud je pole jednoduchého datového typu, použijte velikost. Pokud je pole pole pole, použijte velikost prvku pole. Pokud je pole samo strukturou, porovnejte velikost balení této struktury s velikostí největšího pole v této struktuře a použijte menší z těchto dvou hodnot.

  3. Vypočítat efektivní velikost balení porovnáním velikosti balení s přirozenou velikostí balení pole vypočítanou v kroku 2. Použijte menší z těchto dvou čísel.

  4. Výpočet posunu Posun je první umístění paměti, které se rovná nebo je větší než minimum, a násobek efektivní velikosti balení vypočítané v kroku 3.

Poznámka

Po výpočtu posunů pro všechna pole ve třídě nebo struktuře se přidá odsazení tak, aby celková velikost byla násobek velikosti balení.

Například ve třídě obsahující byte a pomocí velikosti Size1balení je posun byte pole nula (0) a posun long pole je longjedna (1). Pokud je Size4velikost balení , long pole je posunuté o čtyři (4). Ve třídě obsahující dvě short pole je při použití libovolné velikosti balení posun druhého short pole o dvě (2).

Poznámka

Změna velikosti balení může ovlivnit výkon, pokud pole zarovnají na posuny, které nejsou násobky jejich velikosti.

Platí pro