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. |
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. |
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 |
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 |
WCHAR * |
Non pris en charge |
||
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