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 |
---|---|
Se convierte en una matriz del estilo de C o una matriz SAFEARRAY. |
|
Se convierte a un valor de 1, 2 o 4 bytes con true como 1 o -1. |
|
Se convierte a un carácter Unicode o ANSI. |
|
Se convierte a una interfaz de clase. |
|
Se convierte en una variante o interfaz. |
|
Se convierte en una matriz del estilo de C o una matriz SAFEARRAY. |
|
Se convierte en una cadena que termina en una referencia null (Nothing en Visual Basic) o a un tipo BSTR. |
|
Se convierte en una estructura con una posición fija en memoria. |
|
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.