PackingSize Enumeration
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
- 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:
Berechnen Sie den Mindestwert für den Offset, indem Sie die Größe des vorherigen Felds zum Offset des vorherigen Felds hinzufügen.
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.
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.
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 long
enthält, ist Size1
der 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.