PackingSize Enumerazione

Definizione

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à
PackingSize
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:

  1. Calcolare il valore minimo per l'offset aggiungendo le dimensioni del campo precedente all'offset del campo precedente.

  2. 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.

  3. 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.

  4. 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 Size1di compressione , l'offset del campo è zero (0) e l'offset del bytelong campo è uno (1). Se la dimensione della confezione è , il long campo ha Size4offset 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.

Si applica a