PackingSize Výčet
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
- 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:
Výpočet minimální hodnoty posunu přidáním velikosti předchozího pole k posunu předchozího pole.
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.
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.
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 Size1
balení je posun byte
pole nula (0) a posun long
pole je long
jedna (1). Pokud je Size4
velikost 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.