PackingSize Enumeração
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Especifica um dos dois fatores que determinam o alinhamento de memória dos campos quando um tipo passa por marshaling.
Essa enumeração dá suporte a uma combinação bit a bit dos valores de 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
Size1 | 1 | O tamanho do empacotamento é de 1 byte. |
Size128 | 128 | O tamanho do empacotamento é de 128 bytes. |
Size16 | 16 | O tamanho do empacotamento é de 16 bytes. |
Size2 | 2 | O tamanho do empacotamento é de 2 bytes. |
Size32 | 32 | O tamanho do empacotamento é de 32 bytes. |
Size4 | 4 | O tamanho do empacotamento é de 4 bytes. |
Size64 | 64 | O tamanho do empacotamento é de 64 bytes. |
Size8 | 8 | O tamanho do empacotamento é de 8 bytes. |
Unspecified | 0 | O tamanho de embalagem não está especificado. |
Comentários
O tamanho do empacotamento afeta o alinhamento de campos 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 é empacotada; o outro fator é o tamanho efetivo do campo. Para determinar o deslocamento de um campo:
Compute o valor mínimo para o deslocamento adicionando o tamanho do campo anterior ao deslocamento do campo anterior.
Calcular o tamanho do empacotamento natural para o campo: se o campo for um tipo de dados simples, use o tamanho. Se o campo for uma matriz, use o tamanho de um elemento de matriz. Se o campo for uma estrutura em si, compare o tamanho de 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 de empacotamento natural do campo, calculado na etapa 2. Use o menor dos dois números.
Compute o deslocamento. O deslocamento é o primeiro local de memória igual ou maior que o mínimo e um múltiplo do tamanho efetivo de empacotamento calculado na etapa 3.
Observação
Depois que os deslocamentos forem calculados para todos os campos na classe ou estrutura, o preenchimento será adicionado para que o tamanho geral seja um múltiplo do tamanho do empacotamento.
Por exemplo, em uma classe que contém um byte
e um long
, usando o tamanho Size1
de empacotamento , o byte
deslocamento do campo é zero (0) e o deslocamento do long
campo é um (1). Se o tamanho do empacotamento for Size4
, o long
campo terá deslocamento quatro (4). Em uma classe que contém dois short
campos, usando qualquer tamanho de empacotamento, o deslocamento do segundo short
campo é dois (2).
Observação
Alterar o tamanho do empacotamento poderá afetar o desempenho se ele fizer com que os campos sejam alinhados em deslocamentos que não são múltiplos de seu tamanho.