PackingSize Enumeración

Definición

Especifica uno de los dos factores que determinan la alineación en memoria de los campos cuando se calculan las referencias de un tipo.Specifies one of two factors that determine the memory alignment of fields when a type is marshaled.

Esta enumeración tiene el atributo FlagsAttribute, que permite una combinación bit a bit de sus valores de miembro.

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

Campos

Size1 1

El tamaño de empaquetado es de 1 byte.The packing size is 1 byte.

Size128 128

El tamaño de empaquetado es de 128 bytes.The packing size is 128 bytes.

Size16 16

El tamaño de empaquetado es de 16 bytes.The packing size is 16 bytes.

Size2 2

El tamaño de empaquetado es de 2 bytes.The packing size is 2 bytes.

Size32 32

El tamaño de empaquetado es de 32 bytes.The packing size is 32 bytes.

Size4 4

El tamaño de empaquetado es de 4 bytes.The packing size is 4 bytes.

Size64 64

El tamaño de empaquetado es de 64 bytes.The packing size is 64 bytes.

Size8 8

El tamaño de empaquetado es de 8 bytes.The packing size is 8 bytes.

Unspecified 0

No se ha especificado el tamaño de empaquetado.The packing size is not specified.

Comentarios

El tamaño de empaquetado afecta a la alineación de los campos de estructuras y LayoutKind.Sequentialclases cuya organización es.Packing size affects the alignment of fields in structures and classes whose organization is LayoutKind.Sequential. El tamaño de empaquetado es uno de dos factores que determinan el desplazamiento de un campo cuando se calculan las referencias de la estructura o la clase; el otro factor es el tamaño efectivo 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. Para determinar el desplazamiento de un campo:To determine the offset of a field:

  1. Calcule el valor mínimo para el desplazamiento agregando el tamaño del campo anterior al desplazamiento del campo anterior.Compute the minimum value for the offset by adding the size of the preceding field to the offset of the preceding field.

  2. Calcule el tamaño de empaquetado natural para el campo: Si el campo es un tipo de datos simple, use el tamaño.Compute the natural packing size for the field: If the field is a simple data type, use the size. Si el campo es una matriz, use el tamaño de un elemento de la matriz.If the field is an array, use the size of an array element. Si el campo es en sí mismo una estructura, compare el tamaño de empaquetado de esa estructura con el tamaño del campo más grande de la estructura y use el menor de los dos valores.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. Calcule el tamaño de empaquetado efectivo comparando el tamaño de empaquetado con el tamaño de empaquetado natural del campo, calculado en el paso 2.Compute the effective packing size by comparing the packing size to the natural packing size of the field, computed in step 2. Use el menor de los dos números.Use the smaller of the two numbers.

  4. Calcular el desplazamiento.Compute the offset. El desplazamiento es la primera ubicación de memoria que es igual o mayor que el mínimo, y un múltiplo del tamaño de empaquetado efectivo calculado en el paso 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 vez que los desplazamientos se han calculado para todos los campos de la clase o estructura, se agrega relleno para que el tamaño total sea un múltiplo del tamaño de empaquetado.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.

Por ejemplo, en una clase que contiene byte un y longun, con el Size1tamaño de empaquetado, el byte desplazamiento del long campo es cero (0) y el desplazamiento del campo es 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). Si el tamaño de empaquetado Size4es, long el campo tiene el desplazamiento cuatro (4).If the packing size is Size4, the long field has offset four (4). En una clase que contiene short dos campos, con cualquier tamaño de empaquetado, el desplazamiento del short segundo campo es dos (2).In a class containing two short fields, using any packing size, the offset of the second short field is two (2).

Nota

Cambiar el tamaño de empaquetado puede afectar al rendimiento si hace que los campos se alineen en desplazamientos que no son múltiplos de su tamaño.Changing the packing size can affect performance if it causes fields to be aligned on offsets that are not multiples of their size.

Se aplica a