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 Packungsgröße wirkt sich auf die Ausrichtung von Feldern in Strukturen und Klassen aus, deren organization istLayoutKind.Sequential. Die Packungsgröße ist einer von zwei Faktoren, die den Offset eines Felds bestimmen, wenn die Struktur oder Klasse gemarshallt 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 die Größe des vorherigen Felds zum Offset des vorherigen Felds hinzufügen.

  2. Berechnen der natürlichen Packgröß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 Packungsgröß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 Verpackungsgröße des Felds vergleichen, die in Schritt 2 berechnet wurde. Verwenden Sie die kleinere der beiden Zahlen.

  4. Berechnen Sie den Offset. Der Offset ist der erste Speicherort, 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 Size1der Offset des byte Felds beispielsweise null (0) und der Offset des long Felds eins (1). Wenn die Packungsgröße ist Size4, weist das long Feld einen Offset von vier (4) auf. In einer Klasse, die zwei short Felder enthält, beträgt der Offset des zweiten short Felds unter Verwendung einer beliebigen Verpackungsgröße zwei (2).

Hinweis

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

Gilt für: