PackingSize Enumerazione
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Specifica uno dei due fattori che determinano l'allineamento della memoria dei campi quando viene effettuato il marshalling di un tipo.
Questa enumerazione supporta una combinazione bit per bit dei rispettivi valori dei membri.
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
- Ereditarietà
- Attributi
Campi
Size1 | 1 | La dimensione di compressione è di 1 byte. |
Size128 | 128 | La dimensione di compressione è di 128 byte. |
Size16 | 16 | La dimensione di compressione è di 16 byte. |
Size2 | 2 | La dimensione di compressione è di 2 byte. |
Size32 | 32 | La dimensione di compressione è di 32 byte. |
Size4 | 4 | La dimensione di compressione è di 4 byte. |
Size64 | 64 | La dimensione di compressione è di 64 byte. |
Size8 | 8 | La dimensione di compressione è di 8 byte. |
Unspecified | 0 | La dimensione di compressione non è specificata. |
Commenti
Le dimensioni di compressione influiscono sull'allineamento dei campi nelle strutture e nelle classi la cui organizzazione è LayoutKind.Sequential. La dimensione di imballaggio è uno dei due fattori che determinano l'offset di un campo quando la struttura o la classe viene marshallata; l'altro fattore è la dimensione effettiva del campo. Per determinare l'offset di un campo:
Calcolare il valore minimo per l'offset aggiungendo le dimensioni del campo precedente all'offset del campo precedente.
Calcolare le dimensioni di imballaggio naturale per il campo: se il campo è un tipo di dati semplice, usare le dimensioni. Se il campo è una matrice, usare le dimensioni di un elemento di matrice. Se il campo è una struttura stessa, confrontare le dimensioni di compressione di tale struttura alle dimensioni del campo più grande in tale struttura e utilizzare le dimensioni più piccole dei due valori.
Calcolare le dimensioni effettive di imballaggio confrontando le dimensioni di imballaggio alla dimensione naturale del campo, calcolata nel passaggio 2. Usare la dimensione più piccola dei due numeri.
Calcolare l'offset. L'offset è la prima posizione di memoria uguale o maggiore del minimo e un multiplo delle dimensioni effettive calcolate nel passaggio 3.
Nota
Una volta calcolati gli offset per tutti i campi della classe o della struttura, la spaziatura interna viene aggiunta in modo che la dimensione complessiva sia un multiplo delle dimensioni di imballaggio.
Ad esempio, in una classe contenente un byte
oggetto e long
, usando la dimensione Size1
di compressione , l'offset del campo è zero (0) e l'offset del byte
long
campo è uno (1). Se la dimensione della confezione è , il long
campo ha Size4
offset quattro (4). In una classe contenente due short
campi, usando qualsiasi dimensione di compressione, l'offset del secondo short
campo è due (2).
Nota
La modifica delle dimensioni della confezione può influire sulle prestazioni se causa l'allineamento dei campi sugli offset che non sono più delle dimensioni.