PackingSize Enumeração
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Especifica um de dois fatores que determinam o alinhamento de memória dos campos quando um tipo é marshaleado.
Esta enumeração suporta uma combinação bit-a-bit dos respetivos valores membro.
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
- Herança
- Atributos
Campos
| Name | Valor | Description |
|---|---|---|
| Unspecified | 0 | O tamanho da embalagem não é especificado. |
| Size1 | 1 | O tamanho da embalagem é de 1 byte. |
| Size2 | 2 | O tamanho de empacotamento é de 2 bytes. |
| Size4 | 4 | O tamanho de empacotamento é de 4 bytes. |
| Size8 | 8 | O tamanho de empacotamento é de 8 bytes. |
| Size16 | 16 | O tamanho de empacotamento é de 16 bytes. |
| Size32 | 32 | O tamanho de empacotamento é de 32 bytes. |
| Size64 | 64 | O tamanho de empacotamento é de 64 bytes. |
| Size128 | 128 | O tamanho da embalagem é de 128 bytes. |
Observações
O tamanho do empacotamento afeta o alinhamento dos corpos em estruturas e classes cuja organização é LayoutKind.Sequential. O tamanho do empacotamento é um dos dois fatores que determinam o deslocamento de um campo quando a estrutura ou classe é organizada; O outro fator é o tamanho efetivo do campo. Para determinar o deslocamento de um corpo:
Calcule o valor mínimo para o deslocamento somando o tamanho do campo anterior ao deslocamento do campo anterior.
Calcule o tamanho natural de empacotamento para o campo: Se o campo for um tipo de dado simples, use o tamanho. Se o campo for um array, use o tamanho de um elemento de array. Se o corpo for ele próprio uma estrutura, compare o tamanho do empacotamento dessa estrutura com o tamanho do maior campo nessa estrutura e use o menor dos dois valores.
Calcule o tamanho efetivo do empacotamento comparando o tamanho do empacotamento com o tamanho natural do empacotamento do campo, calculado no passo 2. Use o menor dos dois números.
Calcula o deslocamento. O deslocamento é a primeira localização de memória igual ou maior que o mínimo, e um múltiplo do tamanho efetivo do empacotamento calculado no passo 3.
Note
Depois de calculados os deslocamentos para todos os campos da classe ou estrutura, adiciona-se preenchimento de modo a que o tamanho total seja múltiplo do tamanho do empacotamento.
Por exemplo, numa classe contendo a byte e a long, usando o tamanho Size1do empacotamento , o deslocamento do byte corpo é zero (0) e o deslocamento do long corpo é um (1). Se o tamanho do empacotamento for Size4, o long campo tem deslocamento quatro (4). Numa classe que contém dois short campos, usando qualquer tamanho de empacotamento, o deslocamento do segundo short campo é dois (2).
Note
Alterar o tamanho do empacotamento pode afetar o desempenho se fizer com que os campos fiquem alinhados em deslocamentos que não sejam múltiplos do seu tamanho.