Compartilhar via


Blittable e tipos Blittable não

A maioria dos tipos de dados têm uma representação comum em ambos gerenciado e un gerenciado memória e não exigem tratamento especial pelo interop marshaler.Esses tipos são chamados de tipos blittable como não requerem conversão quando eles são passados entre gerenciado e código não gerenciado.

Os seguintes tipos do System namespace são tipos blittable:

Além disso, os seguintes tipos complexos são tipos blittable:

  • Matrizes unidimensionais de tipos blittable, sistema autônomo uma matriz de inteiros.No entanto, um tipo que contém uma variável matriz de tipos blittable não é propriamente dito blittable.

  • Tipos de valor formatado que contêm tipos blittable somente (e classes) se eles são empacotados sistema autônomo tipos formatados.Para obter mais informações sobre os tipos de valor formatado, consulte Padrão de marshaling de tipos de valor.

Referências de objeto não são blittable.Isso inclui uma matriz de referências a objetos que são blittable em si.Por exemplo, você pode definir uma estrutura que é blittable, mas você não pode definir um tipo blittable que contém uma matriz de referências a essas estruturas.

sistema autônomo uma otimização, matrizes de tipos blittable e classes que contêm somente sistema autônomo membros blittable são fixado em vez de copiados durante o marshaling.Esses tipos podem aparecer para ser empacotado sistema autônomo in/out parâmetros quando o chamador e o computador chamado estão em apartment mesmo.No entanto, esses tipos são empacotados, na verdade, sistema autônomo em parâmetros e você deve aplicar o InAttribute e OutAttribute Se você quiser realizar realizar marshaling o argumento sistema autônomo um parâmetro de entrada/saída de atributos.

Alguns tipos de dados gerenciados requerem uma representação diferente em um ambiente não gerenciado.Esses tipos de dados blittable não devem ser convertidos em um formulário que pode ser empacotado.Por exemplo, cadeias de caracteres gerenciadas são tipos blittable não porque eles devem ser convertidos em objetos string antes que pode ser empacotados.

A tabela a seguir lista tipos blittable não desde o System espaço para nome. Delegados, que são estruturas de dados que se referir a um método estático ou a uma instância de classe, são também blittable não.

Tipo blittable não

Descrição

System.Array

Converte um ou em uma matriz de estilo C.SAFEARRAY.

sistema.booliano

Converte um 1, 2 ou 4 byte valor com true sistema autônomo 1 ou -1.

sistema.Char

Converte um caractere Unicode ou ANSI.

sistema.classe

Converte em uma interface de classe.

System.Object

Converte uma variante ou uma interface.

sistema.Mdarray

Converte um ou em uma matriz de estilo C.SAFEARRAY.

sistema.String

Converte em uma seqüência de caracteres terminando em um null referência ou para um BSTR.

sistema.valuetype

Converte em uma estrutura com um layout de memória fixa.

sistema.Szarray

Converte um ou em uma matriz de estilo C.SAFEARRAY.

Tipos de classe e objeto são suportados somente pelo interoperabilidade COM.Para tipos correspondentes no Visual Basic 2005, C# e C++, consulte o Visão geral sobre biblioteca classes do .NET Framework.

Consulte também

Outros recursos

Comportamento de marshaling padrão