PackingSize Énumération

Définition

Spécifie l'un des deux facteurs qui déterminent l'alignement de mémoire des champs lorsqu'un type est marshalé.Specifies one of two factors that determine the memory alignment of fields when a type is marshaled.

Cette énumération a un attribut FlagsAttribute qui permet une combinaison au niveau du bit de ses valeurs membres.

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
Héritage
PackingSize
Attributs

Champs

Size1 1

La taille de compactage est égale à 1 octet.The packing size is 1 byte.

Size128 128

La taille de compactage est égale à 128 octets.The packing size is 128 bytes.

Size16 16

La taille de compression est égale à 16 octets.The packing size is 16 bytes.

Size2 2

La taille de compression est égale à 2 octets.The packing size is 2 bytes.

Size32 32

La taille de compression est égale à 32 octets.The packing size is 32 bytes.

Size4 4

La taille de compression est égale à 4 octets.The packing size is 4 bytes.

Size64 64

La taille de compression est égale à 64 octets.The packing size is 64 bytes.

Size8 8

La taille de compression est égale à 8 octets.The packing size is 8 bytes.

Unspecified 0

La taille de compactage n'est pas spécifiée.The packing size is not specified.

Remarques

La taille de compression affecte l’alignement des champs dans les structures et les classes dont l’organisation est LayoutKind.Sequential .Packing size affects the alignment of fields in structures and classes whose organization is LayoutKind.Sequential. La taille de compression est l’un des deux facteurs qui déterminent l’offset d’un champ lorsque la structure ou la classe est marshalée ; l’autre facteur est la taille effective du champ.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. Pour déterminer le décalage d’un champ :To determine the offset of a field:

  1. Calculez la valeur minimale du décalage en ajoutant la taille du champ précédent au décalage du champ précédent.Compute the minimum value for the offset by adding the size of the preceding field to the offset of the preceding field.

  2. Calculez la taille de compression naturelle pour le champ : si le champ est un type de données simple, utilisez la taille.Compute the natural packing size for the field: If the field is a simple data type, use the size. Si le champ est un tableau, utilisez la taille d’un élément de tableau.If the field is an array, use the size of an array element. Si le champ est lui-même une structure, comparez la taille de compactage de cette structure à la taille du champ le plus grand dans cette structure et utilisez la plus petite des deux valeurs.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. Calculez la taille de compactage effective en comparant la taille de compression à la taille de compression naturelle du champ, calculée à l’étape 2.Compute the effective packing size by comparing the packing size to the natural packing size of the field, computed in step 2. Utilisez le plus petit des deux nombres.Use the smaller of the two numbers.

  4. Calculez le décalage.Compute the offset. Le décalage est le premier emplacement de mémoire qui est supérieur ou égal au minimum, et un multiple de la taille de compactage effective calculée à l’étape 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.

Notes

Une fois que les décalages ont été calculés pour tous les champs de la classe ou de la structure, le remplissage est ajouté afin que la taille globale soit un multiple de la taille de compression.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.

Par exemple, dans une classe contenant un byte et un long , en utilisant Size1 la taille de compression, le décalage du byte champ est égal à zéro (0) et le décalage du long champ est un (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). Si la taille de compression est Size4 , le long champ a un décalage de quatre (4).If the packing size is Size4, the long field has offset four (4). Dans une classe contenant deux short champs, à l’aide de n’importe quelle taille de compression, le décalage du deuxième short champ est de deux (2).In a class containing two short fields, using any packing size, the offset of the second short field is two (2).

Notes

La modification de la taille de compression peut affecter les performances si elle entraîne l’alignement des champs sur les décalages qui ne sont pas des multiples de leur taille.Changing the packing size can affect performance if it causes fields to be aligned on offsets that are not multiples of their size.

S’applique à