Share via


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

Actualización: noviembre 2007

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 porque no requieren conversión cuando se pasan entre código administrado y código 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 (y clases si se realiza el cálculo de referencias como tipos con formato). Para obtener más información sobre los tipos de valor con formato, vea Cálculo de referencias predeterminado para tipos de valor.

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 medida de 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 lugar 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.

Algunos tipos de datos administrados requieren una representación diferente en un entorno no administrado. Estos tipos de datos no representables como bits o bytes se deben convertir a un formato cuyas referencias se puedan calcular. Por ejemplo, las cadenas administradas son tipos no representables como bits o bytes porque deben convertirse en objetos de cadena antes de poder calcular sus referencias.

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 de estilo C o una matriz SAFEARRAY.

System.Boolean

Se convierte en un valor de 1, 2 ó 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 de estilo C o una matriz SAFEARRAY.

System.String

Se convierte en una cadena que termina en una referencia null 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 de estilo 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 Información general de la biblioteca de clases de .NET Framework.

Vea también

Otros recursos

Comportamiento predeterminado del cálculo de referencias