Share via


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.

Enum

Tipo de valor subyacente de la enumeración.

Cadenas ANSI

Sólo se admite si se pasa como una matriz de bytes.

String

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

StringBuilder

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

StringBuilder

StringBuilder

WCHAR *

No se admite

DateTime

DateTime

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