PackingSize Enumeración
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Especifica uno de dos factores que determinan la alineación de memoria de los campos cuando se calculan las referencias de un tipo.
Esta enumeración admite una combinación bit a bit de sus valores de miembro.
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
- Herencia
- Atributos
Campos
Size1 | 1 | El tamaño de empaquetado es de 1 byte. |
Size128 | 128 | El tamaño de empaquetado es de 128 bytes. |
Size16 | 16 | El tamaño de empaquetado es de 16 bytes. |
Size2 | 2 | El tamaño de empaquetado es de 2 bytes. |
Size32 | 32 | El tamaño de empaquetado es de 32 bytes. |
Size4 | 4 | El tamaño de empaquetado es de 4 bytes. |
Size64 | 64 | El tamaño de empaquetado es de 64 bytes. |
Size8 | 8 | El tamaño de empaquetado es de 8 bytes. |
Unspecified | 0 | No se ha especificado el tamaño de empaquetado. |
Comentarios
El tamaño de empaquetado afecta a la alineación de campos en estructuras y clases cuya organización es LayoutKind.Sequential. El tamaño de empaquetado es uno de los dos factores que determinan el desplazamiento de un campo cuando se serializa la estructura o clase; el otro factor es el tamaño efectivo del campo. Para determinar el desplazamiento de un campo:
Calcule el valor mínimo para el desplazamiento agregando el tamaño del campo anterior al desplazamiento del campo anterior.
Calcular el tamaño de empaquetado natural para el campo: si el campo es un tipo de datos simple, use el tamaño. Si el campo es una matriz, use el tamaño de un elemento de matriz. Si el campo es en sí misma una estructura, compare el tamaño de empaquetado de esa estructura con el tamaño del campo más grande de esa estructura y use el menor de los dos valores.
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. Use el menor de los dos números.
Calcule el desplazamiento. 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.
Nota
Una vez que se han calculado desplazamientos para todos los campos de la clase o estructura, se agrega relleno para que el tamaño general sea un múltiplo del tamaño de empaquetado.
Por ejemplo, en una clase que contiene y byte
, long
utilizando el tamaño Size1
de empaquetado , el desplazamiento del byte
campo es cero (0) y el desplazamiento del long
campo es uno (1). Si el tamaño de empaquetado es Size4
, el long
campo tiene el desplazamiento cuatro (4). En una clase que contiene dos short
campos, con cualquier tamaño de empaquetado, el desplazamiento del segundo short
campo es dos (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.