Tipos que pueden o que no pueden representarse como bits o bytes

La mayor parte de los tipos de datos tienen una representación común en la memoria administrada y en la memoria no administrada, y no requieren un control especial por parte del contador de referencias interoperativo. Estos tipos se denominan tipos que pueden representarse como bits o bytes, ya que no requieren conversión al pasar entre código administrado y no administrado.

Los siguientes tipos del espacio de nombres System pueden representarse como bits o bytes:

Los siguientes tipos complejos también pueden representarse como bits o bytes:

  • Matrices unidimensionales de tipos que pueden representarse como bits o bytes, como una matriz de enteros. Sin embargo, un tipo que contenga una matriz de variable de tipos que pueden representarse como bits o bytes no se puede representar como bits o bytes.

  • Tipos de valor con formato que sólo contienen tipos que pueden representarse como bits o bytes, si se realiza su cálculo de referencias como tipos con formato.

Las referencias a objetos no pueden representarse en bit o bytes. Esto incluye una matriz de referencias a objetos que pueden representarse como bits o bytes por sí mismos. Por ejemplo, puede definir una estructura que se puede representar como bits o bytes, pero no puede definir un tipo representable como bits o bytes que contiene una matriz de referencias a dicha estructura.

Como optimización, las matrices de tipos que pueden representarse como bits o bytes, y las clases que contienen sólo miembros que pueden representarse como bits o bytes se fijan en lujar de copiarse durante el cálculo de referencias. Puede parecer que se realiza el cálculo de referencias de estos tipos como parámetros In/Out cuando el llamador y el destinatario de la llamada están en el mismo apartamento. No obstante, el cálculo de referencias de estos tipos se realiza como parámetros In y el usuario debe aplicar los atributos InAttribute y OutAttribute si desea calcular la referencia del argumento como parámetro In/Out.

Los tipos que no se pueden representar como bits o bytes tienen representaciones diferentes o ambiguas en lenguajes administrados y no administrados. Estos tipos pueden requerir conversión cuando se calculan sus referencias entre código administrado y no administrado. Por ejemplo, las cadenas administradas son tipos que no pueden representarse como bits o bytes porque tienen varias representaciones no administradas y distintas, algunas de las cuales pueden requerir conversión.

En la tabla siguiente se enumeran tipos del espacio de nombres System que no pueden representarse como bits o bytes. Los delegados, que son estructuras de datos que hacen referencia a un método estático o a una instancia de clase, tampoco pueden representarse como bits o bytes.

Tipo que no puede representarse como bits o bytes Descripción

System.Array

Se convierte en una matriz del estilo de C o una matriz SAFEARRAY.

System.Boolean

Se convierte a un valor de 1, 2 o 4 bytes con true como 1 o -1.

System.Char

Se convierte a un carácter Unicode o ANSI.

System.Class

Se convierte a una interfaz de clase.

System.Object

Se convierte en una variante o interfaz.

System.Mdarray

Se convierte en una matriz del estilo de C o una matriz SAFEARRAY.

System.String

Se convierte en una cadena que termina en una referencia null (Nothing en Visual Basic) o a un tipo BSTR.

System.Valuetype

Se convierte en una estructura con una posición fija en memoria.

System.Szarray

Se convierte en una matriz del estilo de C o una matriz SAFEARRAY.

Los tipos de clase y objeto se admiten sólo mediante interoperatividad COM. Para obtener los tipos correspondientes en Visual Basic 2005, C# y C++, vea la Introducción a la biblioteca de clases de .NET Framework.

Vea también

Otros recursos

Comportamiento predeterminado del cálculo de referencias