PackingSize Enumerazione

Definizione

Specifica uno dei due fattori che determinano l'allineamento della memoria dei campi quando viene eseguito 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

Nome Valore Descrizione
Unspecified 0

La dimensione di compressione non è specificata.

Size1 1

La dimensione di compressione è di 1 byte.

Size2 2

La dimensione di compressione è di 2 byte.

Size4 4

La dimensione di compressione è di 4 byte.

Size8 8

La dimensione di compressione è di 8 byte.

Size16 16

La dimensione di compressione è di 16 byte.

Size32 32

La dimensione di compressione è di 32 byte.

Size64 64

La dimensione di compressione è di 64 byte.

Size128 128

La dimensione di compressione è di 128 byte.

Commenti

La dimensione di compressione influisce sull'allineamento dei campi nelle strutture e nelle classi la cui organizzazione è LayoutKind.Sequential. La dimensione di compressione è uno dei due fattori che determinano l'offset di un campo quando viene eseguito il marshalling della struttura o della classe; 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 compressione naturali 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 è stesso una struttura, confrontare le dimensioni di compressione di tale struttura con le dimensioni del campo più grande in tale struttura e utilizzare il più piccolo dei due valori.

  3. Calcolare le dimensioni effettive della compressione confrontando le dimensioni di compressione con le dimensioni di compressione naturali del campo, calcolate nel passaggio 2. Usare il più piccolo 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 di compressione calcolate nel passaggio 3.

Note

Una volta calcolati gli offset per tutti i campi della classe o della struttura, la spaziatura interna viene aggiunta in modo che le dimensioni complessive siano multiple delle dimensioni di compressione.

Ad esempio, in una classe contenente un byte e un longoggetto , usando le dimensioni Size1di compressione , l'offset del byte campo è zero (0) e l'offset del long campo è uno (1). Se la dimensione di compressione è Size4, il long campo ha offset quattro (4). In una classe contenente due short campi, utilizzando qualsiasi dimensione di compressione, l'offset del secondo short campo è due (2).

Note

La modifica delle dimensioni di compressione può influire sulle prestazioni se determina l'allineamento dei campi sugli offset che non sono multipli delle relative dimensioni.

Si applica a