PackingSize Enumeração

Definição

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
PackingSize
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:

  1. Calcule o valor mínimo para o deslocamento somando o tamanho do campo anterior ao deslocamento do campo anterior.

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

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

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

Aplica-se a