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í ovlivňuje zarovnání polí ve strukturách a třídách, jejichž organizace 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; druhým faktorem je efektivní velikost pole. Určení posunu pole:

  1. Vypočítá minimální hodnotu posunu přidáním velikosti předchozího pole do posunu předchozího pole.

  2. Vypočítá velikost přirozeného balení pro pole: Pokud je pole jednoduchým datovým typem, použijte velikost. Pokud je pole pole pole, použijte velikost prvku pole. Pokud je pole samotnou strukturou, porovnejte velikost balení této struktury s velikostí největšího pole v této struktuře a použijte menší ze dvou hodnot.

  3. Vypočítá 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. Vypočítá posun. Posun je první umístění paměti, které je rovno nebo 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í, aby celková velikost byla více velikostí balení.

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

Poznámka

Změna velikosti balení může ovlivnit výkon, pokud způsobí zarovnání polí na posunech, které nejsou násobky jejich velikosti.

Platí pro