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 Packgröße wirkt sich auf die Ausrichtung von Feldern in Strukturen und Klassen aus, deren Organisation lautet LayoutKind.Sequential. Die Packungsgröße ist einer von zwei Faktoren, die den Offset eines Felds bestimmen, wenn die Struktur oder Klasse gemarst wird. der andere Faktor ist die effektive Größe des Felds. So bestimmen Sie den Offset eines Felds:

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

  2. Berechnen der natürlichen Packungsgröße für das Feld: Wenn es sich bei dem Feld um einen einfachen Datentyp handelt, 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 Packgröße dieser Struktur mit der Größe des größten Felds in dieser Struktur, und verwenden Sie den kleineren der beiden Werte.

  3. Berechnen Sie die effektive Verpackungsgröße, indem Sie die Verpackungsgröße mit der natürlichen Packgröß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 Packgröße, die in Schritt 3 berechnet wurde.

Hinweis

Nachdem Offsets für alle Felder in der Klasse oder Struktur berechnet wurden, wird die Auffüllung hinzugefügt, sodass die Gesamtgröße ein Vielfaches der Packgröße ist.

In einer Klasse, die ein byte und ein longenthält, ist Size1beispielsweise der Offset des byte Felds null (0) und der Offset des long Felds eins (1). Wenn die Packungsgröße ist, hat Size4das long Feld offset vier (4). In einer Klasse, die zwei short Felder enthält, beträgt der Offset des zweiten short Felds unter Verwendung einer beliebigen Packungsgröße zwei (2).

Hinweis

Das Ändern der Packungsgröße kann sich auf die Leistung auswirken, wenn Felder an Offsets ausgerichtet werden, die kein Vielfaches ihrer Größe sind.

Gilt für: