PackingSize Wyliczenie

Definicja

Określa jeden z dwóch czynników, które określają wyrównanie pamięci pól podczas marshalingu typu.

To wyliczenie obsługuje bitową kombinację jego wartości składowych.

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
Dziedziczenie
PackingSize
Atrybuty

Pola

Size1 1

Rozmiar pakowania wynosi 1 bajt.

Size128 128

Rozmiar pakowania wynosi 128 bajtów.

Size16 16

Rozmiar pakowania wynosi 16 bajtów.

Size2 2

Rozmiar pakowania to 2 bajty.

Size32 32

Rozmiar pakowania wynosi 32 bajty.

Size4 4

Rozmiar pakowania to 4 bajty.

Size64 64

Rozmiar pakowania wynosi 64 bajty.

Size8 8

Rozmiar pakowania wynosi 8 bajtów.

Unspecified 0

Nie określono rozmiaru pakowania.

Uwagi

Rozmiar pakowania wpływa na wyrównanie pól w strukturach i klasach, których organizacja to LayoutKind.Sequential. Rozmiar pakowania jest jednym z dwóch czynników, które określają przesunięcie pola podczas marshalingu struktury lub klasy; drugi czynnik jest efektywnym rozmiarem pola. Aby określić przesunięcie pola:

  1. Oblicz minimalną wartość przesunięcia, dodając rozmiar poprzedniego pola do przesunięcia poprzedniego pola.

  2. Oblicz naturalny rozmiar pakowania dla pola: jeśli pole jest prostym typem danych, użyj rozmiaru. Jeśli pole jest tablicą, użyj rozmiaru elementu tablicy. Jeśli pole jest strukturą, porównaj rozmiar pakowania tej struktury z rozmiarem największego pola w tej strukturze i użyj mniejszej z tych dwóch wartości.

  3. Oblicz skuteczny rozmiar pakowania, porównując rozmiar pakowania z naturalnym rozmiarem pakowania pola obliczonym w kroku 2. Użyj mniejszej z dwóch liczb.

  4. Oblicz przesunięcie. Przesunięcie to pierwsza lokalizacja pamięci, która jest równa lub większa niż minimalna, oraz wielokrotność efektywnego rozmiaru pakowania obliczonego w kroku 3.

Uwaga

Po obliczeniu przesunięć dla wszystkich pól w klasie lub strukturze dopełnienie jest dodawane tak, aby ogólny rozmiar był wielokrotny rozmiaru pakowania.

Na przykład w klasie zawierającej byte elementy i longprzy użyciu rozmiaru Size1pakowania przesunięcie byte pola wynosi zero (0), a przesunięcie long pola to jedno (1). Jeśli rozmiar pakowania to Size4, long pole ma przesunięcie cztery (4). W klasie zawierającej dwa short pola przy użyciu dowolnego rozmiaru pakowania przesunięcie drugiego short pola to dwa (2).

Uwaga

Zmiana rozmiaru pakowania może mieć wpływ na wydajność, jeśli powoduje wyrównanie pól w przypadku przesunięć, które nie są wielokrotnościami ich rozmiaru.

Dotyczy