PackingSize PackingSize PackingSize PackingSize Enum

Definizione

Specifica uno dei due fattori che determinano l'allineamento in memoria dei campi quando un tipo viene sottoposto a marshalling.Specifies one of two factors that determine the memory alignment of fields when a type is marshaled.

Questa enumerazione ha un attributo FlagsAttribute che consente una combinazione bit per bit dei valori del relativo membro.

public enum class PackingSize
[System.Runtime.InteropServices.ComVisible(true)]
[System.Flags]
[System.Serializable]
public enum PackingSize
type PackingSize = 
Public Enum PackingSize
Ereditarietà
Attributi

Campi

Size1 Size1 Size1 Size1 1

La dimensione di compressione è di 1 byte.The packing size is 1 byte.

Size128 Size128 Size128 Size128 128

La dimensione di compressione è di 128 byte.The packing size is 128 bytes.

Size16 Size16 Size16 Size16 16

La dimensione di compressione è di 16 byte.The packing size is 16 bytes.

Size2 Size2 Size2 Size2 2

La dimensione di compressione è di 2 byte.The packing size is 2 bytes.

Size32 Size32 Size32 Size32 32

La dimensione di compressione è di 32 byte.The packing size is 32 bytes.

Size4 Size4 Size4 Size4 4

La dimensione di compressione è di 4 byte.The packing size is 4 bytes.

Size64 Size64 Size64 Size64 64

La dimensione di compressione è di 64 byte.The packing size is 64 bytes.

Size8 Size8 Size8 Size8 8

La dimensione di compressione è di 8 byte.The packing size is 8 bytes.

Unspecified Unspecified Unspecified Unspecified 0

La dimensione di compressione non è specificata.The packing size is not specified.

Commenti

Le dimensioni di compressione influiscono sull'allineamento dei campi nelle strutture e nelle LayoutKind.Sequentialclassi la cui organizzazione è.Packing size affects the alignment of fields in structures and classes whose organization is LayoutKind.Sequential. La dimensione di compressione è uno dei due fattori che determinano l'offset di un campo quando viene effettuato il marshalling della struttura o della classe; l'altro fattore è costituito dalle dimensioni effettive del campo.The packing size is one of two factors that determine the offset of a field when the structure or class is marshaled; the other factor is the effective size of the field. Per determinare l'offset di un campo:To determine the offset of a field:

  1. Consente di calcolare il valore minimo per l'offset aggiungendo le dimensioni del campo precedente all'offset del campo precedente.Compute the minimum value for the offset by adding the size of the preceding field to the offset of the preceding field.

  2. Calcolare la dimensione di compressione naturale per il campo: Se il campo è un tipo di dati semplice, utilizzare le dimensioni.Compute the natural packing size for the field: If the field is a simple data type, use the size. Se il campo è una matrice, utilizzare la dimensione di un elemento di matrice.If the field is an array, use the size of an array element. Se il campo è a sua volta una struttura, confrontare le dimensioni di compressione della struttura con le dimensioni del campo più grande della struttura e usare il più piccolo dei due valori.If the field is itself a structure, compare the packing size of that structure to the size of the largest field in that structure, and use the smaller of the two values.

  3. Calcolare la dimensione di compressione effettiva confrontando le dimensioni di compressione con le dimensioni di compressione naturali del campo, calcolate nel passaggio 2.Compute the effective packing size by comparing the packing size to the natural packing size of the field, computed in step 2. Usare il minore dei due numeri.Use the smaller of the two numbers.

  4. Calcola l'offset.Compute the offset. L'offset è la prima posizione di memoria maggiore o uguale al valore minimo e un multiplo delle dimensioni di compressione effettive calcolate nel passaggio 3.The offset is the first memory location that is equal to or larger than the minimum, and a multiple of the effective packing size computed in step 3.

Nota

Una volta calcolati gli offset per tutti i campi della classe o della struttura, viene aggiunta la spaziatura interna in modo che la dimensione complessiva sia un multiplo delle dimensioni di compressione.Once offsets have been computed for all the fields in the class or structure, padding is added so that the overall size is a multiple of the packing size.

Ad esempio, in una classe che contiene byte longe, usando le dimensioni Size1di compressione, l'offset del byte long campo è zero (0) e l'offset del campo è uno (1).For example, in a class containing a byte and a long, using packing size Size1, the offset of the byte field is zero (0) and the offset of the long field is one (1). Se la dimensione di compressione Size4è, long il campo ha un offset quattro (4).If the packing size is Size4, the long field has offset four (4). In una classe che contiene short due campi, usando le dimensioni di compressione, l'offset del short secondo campo è due (2).In a class containing two short fields, using any packing size, the offset of the second short field is two (2).

Nota

La modifica delle dimensioni di compressione può influire sulle prestazioni se i campi devono essere allineati su offset che non sono multipli di dimensioni.Changing the packing size can affect performance if it causes fields to be aligned on offsets that are not multiples of their size.

Si applica a