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, die die Speicherausrichtung von Feldern bestimmen, wenn ein Typ gemarstet 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
| Name | Wert | Beschreibung |
|---|---|---|
| Unspecified | 0 | Die Verpackungsgröße ist nicht angegeben. |
| Size1 | 1 | Die Verpackungsgröße beträgt 1 Byte. |
| Size2 | 2 | Die Verpackungsgröße beträgt 2 Byte. |
| Size4 | 4 | Die Verpackungsgröße beträgt 4 Byte. |
| Size8 | 8 | Die Verpackungsgröße beträgt 8 Byte. |
| Size16 | 16 | Die Verpackungsgröße beträgt 16 Byte. |
| Size32 | 32 | Die Verpackungsgröße beträgt 32 Byte. |
| Size64 | 64 | Die Verpackungsgröße beträgt 64 Byte. |
| Size128 | 128 | Die Verpackungsgröße beträgt 128 Byte. |
Hinweise
Die Verpackungsgröße wirkt sich auf die Ausrichtung von Feldern in Strukturen und Klassen aus, deren Organisation lautet LayoutKind.Sequential. Die Verpackungsgröße ist einer von zwei Faktoren, die den Offset eines Felds bestimmen, wenn die Struktur oder Klasse gemarstet wird; der andere Faktor ist die effektive Größe des Felds. So bestimmen Sie den Offset eines Felds:
Berechnen Sie den Minimalwert für den Offset, indem Sie die Größe des vorherigen Felds zum Offset des vorherigen Felds hinzufügen.
Berechnen Sie die natürliche Verpackungsgröße für das Feld: Wenn das Feld ein einfacher Datentyp ist, verwenden Sie die Größe. Wenn es sich bei dem Feld um ein Array handelt, 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.
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 kleineren der beiden Zahlen.
Berechnen des Offsets. 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 wird.
Note
Nachdem 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 ein byte und ein long, mithilfe der Verpackungsgröße Size1, der Offset des byte Felds null (0) und der Offset des long Felds eins (1) ist. Wenn die Verpackungsgröße lautet Size4, weist das long Feld offset vier (4) auf. In einer Klasse, die zwei short Felder enthält, ist der Offset des zweiten short Felds mit einer beliebigen Verpackungsgröße zwei (2).
Note
Das Ändern der Verpackungsgröße kann sich auf die Leistung auswirken, wenn Felder auf Offsets ausgerichtet werden, die keine Vielfache ihrer Größe sind.