PackingSize Wyliczenie

Definicja

Określa jeden z dwóch czynników, które określają wyrównanie pamięci pól, gdy typ jest marshalowany.

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 to 1 bajt.

Size128 128

Rozmiar pakowania wynosi 128 bajtów.

Size16 16

Rozmiar pakowania wynosi 16 bajtów.

Size2 2

Rozmiar pakowania wynosi 2 bajty.

Size32 32

Rozmiar pakowania wynosi 32 bajty.

Size4 4

Rozmiar pakowania wynosi 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, gdy struktura lub klasa jest marshalowana; 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 mniejszych z tych dwóch wartości.

  3. Oblicz efektywny rozmiar pakowania, porównując rozmiar pakowania do naturalnego rozmiaru pakowania pola obliczonego w kroku 2. Użyj mniejszej z dwóch liczb.

  4. Oblicz przesunięcie. Przesunięcie jest pierwszą lokalizacją 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ęcia dla wszystkich pól w klasie lub strukturze dopełnienie jest dodawane tak, aby ogólny rozmiar był wielokrotnym rozmiarem pakowania.

Na przykład w klasie zawierającej element byte i long, używając rozmiaru Size1pakowania, przesunięcie pola wynosi zero (0), a przesunięcie bytelong 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 wynosi dwa (2).

Uwaga

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

Dotyczy