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

Name Hodnota Description
Unspecified 0

Velikost balení není zadána.

Size1 1

Velikost balení je 1 bajt.

Size2 2

Velikost balení je 2 bajty.

Size4 4

Velikost balení je 4 bajty.

Size8 8

Velikost balení je 8 bajtů.

Size16 16

Velikost balení je 16 bajtů.

Size32 32

Velikost balení je 32 bajtů.

Size64 64

Velikost balení je 64 bajtů.

Size128 128

Velikost balení je 128 bajtů.

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í pole: Pokud je pole jednoduchým datovým typem, použijte velikost. Pokud je pole polem, použijte velikost prvku pole. Pokud je pole samotné struktury, 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ší ze 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.

Note

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

Například ve třídě obsahující a bytelong, použití 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).

Note

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