Partager via


Prise en charge des types

Mise à jour : novembre 2007

Les tableaux suivants décrivent des catégories de types et les résultats du marshaling des types entre les contextes managé et non managé.

Catégories de types

Le tableau suivant décrit et clarifie différents types mentionnés dans les sections suivantes.

Type

Description

Types valeur

Les types valeur contiennent directement les données décrites et la mémoire leur est allouée à partir de la pile.

Types valeur intégrés

Int32, UInt32, Boolean, Single, etc. Pour obtenir une liste complète, consultez Vue d'ensemble de la bibliothèque de classes du .NET Framework.

Types valeur définis par l'utilisateur

Dérivé de System.ValueType. En C#, un type valeur défini par l'utilisateur est défini à l'aide du mot clé struct.

Énumérations

Les énumérations sont également des types valeur. Le type sous-jacent d'une énumération dans le .NET Framework est Int32. Toutefois, vous pouvez définir explicitement une énumération ayant un autre type sous-jacent. Les types sous-jacents autorisés sont tous les types de base intégraux, sauf Char.

Type référence

Les types référence stockent une référence à la mémoire allouée à un objet sur le tas. Il peut s'agir de classes intégrées, de classes définies par l'utilisateur, de tableaux, de types valeur convertis (boxed), de délégués, etc.

Marshaling de types managés en types non managés

Le tableau suivant décrit le résultat du marshaling de types managés en types non managés.

Type managé

Type non managé

Type valeur (y compris supérieur à 32 bits)

Inchangé.

Référence à un type valeur

Pointeur vers le type valeur.

Entier 64 bits

Pointeur vers un tableau de types valeur.

Nombre à virgule flottante

Nombre à virgule flottante.

Tableau de types valeur

Pointeur vers un tableau de types valeur.

Enum

Type valeur sous-jacent de l'énumération.

Chaîne ANSI

Uniquement prises en charge si elles sont passées sous la forme d'un tableau d'octets.

String

Pointeur vers un tableau de caractères Unicode (wchar_t) terminé par null. Le code non managé ne doit pas modifier ce tableau.

Type référence

Pointeur vers les champs de données sous-jacents de l'objet. Les types référence sont toujours marshalés séquentiellement. Vous ne pouvez marshaler que les objets qui contiennent des membres de type valeur.

Référence à un type référence

Non pris en charge.

Tableau de types référence

Non pris en charge.

Délégué

Pointeur fonction

StringBuilder

Pointeur vers un tableau de caractères Unicode (wchart_t) terminé par null. Le code non managé peut modifier ce tableau.

Résultats du marshaling C# et Visual Basic

Le tableau suivant répertorie les types C# et Visual Basic utilisés par le marshaleur pour les types managés lorsque Windows CE est le système d'exploitation hébergeant le code non managé. Cette liste n'est pas exhaustive.

Code managé

Types C#

Code managé

Types Visual Basic

Code non managé

ByVal

Code non managé

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 *

Non pris en charge

StringBuilder

StringBuilder

WCHAR *

Non pris en charge

DateTime

DateTime

DATE

DATE *

int[]

Integer()

INT32 *, INT32[]

Non pris en charge

Prise en charge du type Variant

Le tableau suivant répertorie les types de l'énumération VARENUM pris en charge par le marshaleur IDispatch pour le marshaling de code managé en code non managé. Dans tous les cas, les types sont pris en charge à la fois pour les paramètres et les types de retour. Les types non pris en charge incluent ceux qui ne s'appliquent pas aux types Variant.

Types pris en charge

Types non pris en charge

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 (utilisez VT_ARRAY)

VT_PTR

VT_HRESULT

VT_VOID

VT_CARRAY

VT_LPSTR (utilisez VT_BSTR)

VT_LPWSTR (utilisez VT_BSTR)

VT_FILETIME

VT_BLOB

VT_STREAM

VT_STORAGE

VT_STREAMED_OBJECT

VT_STORED_OBJECT

VT_BLOB_OBJECT

VT_VECTOR

Voir aussi

Autres ressources

Prise en charge du marshaling dans le .NET Compact Framework