PackingSize Enumeration

Definition

Gibt einen von zwei Faktoren an, welche die Speicherausrichtung von Feldern bestimmen, wenn ein Typ gemarshallt wird.

Diese Enumeration unterstützt eine bitweise Kombination ihrer Memberwerte.

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
Vererbung
PackingSize
Attribute

Felder

Size1 1

Die Komprimierungsgröße ist 1 Byte.

Size128 128

Die Komprimierungsgröße ist 128 Bytes.

Size16 16

Die Komprimierungsgröße ist 16 Bytes.

Size2 2

Die Komprimierungsgröße ist 2 Bytes.

Size32 32

Die Komprimierungsgröße ist 32 Bytes.

Size4 4

Die Komprimierungsgröße ist 4 Bytes.

Size64 64

Die Komprimierungsgröße ist 64 Bytes.

Size8 8

Die Komprimierungsgröße ist 8 Bytes.

Unspecified 0

Die Komprimierungsgröße ist nicht angegeben.

Hinweise

Die Verpackungsgröße wirkt sich auf die Ausrichtung von Feldern in Strukturen und Klassen aus, deren Organisation ist LayoutKind.Sequential. Die Verpackungsgröße ist eine von zwei Faktoren, die den Offset eines Felds bestimmen, wenn die Struktur oder Klasse gemarschiert wird; der andere Faktor ist die effektive Größe des Felds. So bestimmen Sie den Offset eines Felds:

  1. Berechnen Sie den Minimalwert für den Offset, indem Sie die Größe des vorherigen Felds dem Offset des vorherigen Felds hinzufügen.

  2. Berechnen Sie die natürliche Verpackungsgröße für das Feld: Wenn das Feld ein einfacher Datentyp ist, verwenden Sie die Größe. Wenn das Feld ein Array ist, verwenden Sie die Größe eines Arrayelements. Wenn das Feld selbst eine Struktur ist, vergleichen Sie die Verpackungsgröße dieser Struktur mit der Größe des größten Felds in dieser Struktur, und verwenden Sie die kleineren der beiden Werte.

  3. Berechnen Sie die effektive Verpackungsgröße, indem Sie die Verpackungsgröße mit der natürlichen Verpackungsgröße des Felds vergleichen, die in Schritt 2 berechnet wird. Verwenden Sie die kleinere der beiden Zahlen.

  4. Berechnen Sie den Offset. Der Offset ist der erste Speicherspeicherort, der gleich oder größer als das Minimum ist, und ein Vielfaches der effektiven Verpackungsgröße, die in Schritt 3 berechnet wird.

Hinweis

Sobald Offsets für alle Felder in der Klasse oder Struktur berechnet wurden, wird der Abstand hinzugefügt, sodass die Gesamtgröße ein Vielfaches der Verpackungsgröße ist.

Beispielsweise ist in einer Klasse, die eine byte und eine long, mithilfe der Verpackungsgröße Size1enthält, der Versatz des byte Felds null (0) und der Offset des long Felds eine (1). Wenn die Verpackungsgröße lautet Size4, weist das long Feld den Offset vier (4) auf. In einer Klasse, die zwei short Felder enthält, ist der Offset des zweiten short Felds zwei (2).

Hinweis

Das Ändern der Verpackungsgröße kann sich auf die Leistung auswirken, wenn Felder auf Offsets ausgerichtet werden, die nicht Vielfache ihrer Größe sind.

Gilt für: