Compatibilidad de tipos
Actualización: noviembre 2007
Las tablas siguientes describen las categorías de tipos y los resultados de calcular referencias a los tipos de contextos administrados a no administrados.
Categorías de tipos
En la tabla siguiente se proporcionan descripciones y aclaraciones para varios de los tipos mencionados en las siguientes secciones.
Tipo |
Descripción |
---|---|
Tipos de valor |
Los tipos de valor contienen directamente los datos descritos; la memoria del tipo de valor se asigna desde la pila. |
Tipos de valor integrados |
Int32, UInt32, Boolean, Single, etc. Para obtener una lista completa, vea Información general de la biblioteca de clases de .NET Framework. |
Tipos de valor definidos por el usuario |
Derivada de System.ValueType. En C#, un tipo de valor definido por el usuario se define mediante la palabra clave struct. |
Enumeraciones |
Las enumeraciones también son tipos de valores. El tipo subyacente de una enumeración en .NET Framework es Int32. No obstante, es posible definir explícitamente una enumeración de manera que tenga otro tipo subyacente. Los tipos subyacentes compatibles son todos los tipos integrales base excepto Char. |
Tipo de referencia |
Los tipos de referencia almacenan una referencia a la memoria de un objeto asignada en el montón. Pueden estar integrados en clases, clases definidas por el usuario, matrices, tipos de valor de boxing, delegados, etc. |
Tipos administrados a no administrados
En la tabla siguiente se describe el resultado de la conversión de tipos administrados a no administrados.
Tipo administrado |
Tipo no administrado |
---|---|
Tipos de valores (incluidos los mayores que 32 bits) |
Sin modificar. |
Referencia al tipo de valor |
Puntero al tipo de valor. |
Entero de 64 bits |
Puntero a una matriz de tipos de valor. |
Número de punto flotante |
Número de punto flotante. |
Matriz de tipos de valor |
Puntero a una matriz de tipos de valor. |
Tipo de valor subyacente de la enumeración. |
|
Cadenas ANSI |
Sólo se admite si se pasa como una matriz de bytes. |
Puntero a una matriz terminada en null de caracteres Unicode (wchar_t). El código no administrado no debe modificar la matriz. |
|
Tipo de referencia |
Puntero a los campos de datos subyacentes del objeto. Los tipos de referencia siempre se convierten en secuencia. Sólo se pueden convertir objetos que contengan miembros del tipo de valor. |
Referencia a tipo de referencia |
No se admite. |
Matriz de tipos de referencia |
No se admite. |
Delegado |
Puntero de función |
Puntero a una matriz terminada en null de caracteres Unicode (wchart_t). El código no administrado puede modificar la matriz. |
Resultados de la conversión en C# y Visual Basic
En la tabla siguiente se muestran los tipos de C# y Visual Basic utilizados por el calculador de referencias de tipos administrados, siendo Windows CE el sistema operativo que aloja el código no administrado. Esta lista no es exhaustiva.
Código administrado Tipos de C# |
Código administrado Tipos de Visual Basic |
Código no administrado ByVal |
Código no administrado ByRef |
---|---|---|---|
bool |
Boolean |
BYTE |
BYTE * |
int |
Integer |
INT32 |
INT32 * |
short |
Short |
SHORT |
SHORT * |
long |
Long |
LONG |
INT64 * |
char |
Char |
WCHAR |
WCHAR * |
float |
Single |
FLOAT |
FLOAT * |
double |
Double |
DOUBLE |
DOUBLE * |
string |
String |
WCHAR * |
No se admite |
WCHAR * |
No se admite |
||
DATE |
DATE * |
||
int[] |
Integer() |
INT32 *, INT32[] |
No se admite |
Compatibilidad con el tipo Variant
La tabla siguiente muestra los tipos de la enumeración VARENUM admitida por el contador de referencias IDispatch para calcular referencias de código administrado a no administrado. En todos los casos, los tipos se admiten tanto para los parámetros como para los tipos de valor devueltos. Los tipos no compatibles incluyen los que no son aplicables a tipos Variant.
Tipos admitidos |
Tipos no admitidos |
---|---|
VT_I2 VT_I4 VT_CY VT_DATE VT_BSTR VT_DISPATCH VT_ERROR VT_BOOL VT_VARIANT VT_UNKNOWN VT_DECIMAL VT_I1 VT_UI1 VT_UI2 VT_UI4 VT_INT VT_UINT VT_ARRAY VT_R8 VT_R4 VT_CF VT_CLSID |
VT_EMPTY VT_NULL VT_I8 VT_UI8 VT_USERDEFINED VT_RECORD VT_SAFEARRAY (use VT_ARRAY) VT_PTR VT_HRESULT VT_VOID VT_CARRAY VT_LPSTR (use VT_BSTR) VT_LPWSTR (use VT_BSTR) VT_FILETIME VT_BLOB VT_STREAM VT_STORAGE VT_STREAMED_OBJECT VT_STORED_OBJECT VT_BLOB_OBJECT VT_VECTOR |
Vea también
Otros recursos
Compatibilidad con el cálculo de referencias en .NET Compact Framework