Ler em inglês

Compartilhar via


PackingSize Enumeração

Definição

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.

C#
public enum PackingSize
C#
[System.Flags]
[System.Serializable]
public enum PackingSize
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum PackingSize
Herança
PackingSize
Atributos

Campos

Nome Valor Description
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:

  1. Compute o valor mínimo para o deslocamento adicionando o tamanho do campo anterior ao deslocamento do campo anterior.

  2. 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.

  3. 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.

  4. 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 Size1de 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.

Aplica-se a

Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0