PackingSize Wyliczenie
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
- 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:
Oblicz minimalną wartość przesunięcia, dodając rozmiar poprzedniego pola do przesunięcia poprzedniego pola.
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.
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.
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 long
przy użyciu rozmiaru Size1
pakowania 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.