Marshaling de classes, de structures, et d'unions
Les classes et les structures sont similaires dans le .NET Framework. Elles peuvent avoir des champs, des propriétés et des événements. Ils peuvent également avoir des méthodes statiques et non statiques. Une différence notable réside dans le fait que les structures sont des types valeur et les classes sont des types référence.
Le tableau suivant répertorie les options de marshaling pour les classes, structures et unions ; il décrit leur usage et fournit un lien vers l'exemple correspondant d'appel de plateforme.
Type |
Description |
Exemple |
---|---|---|
Classe par valeur. |
Passe une classe avec des membres entiers comme paramètre en entrée/sortie, comme le cas managé. |
|
Structure par valeur. |
Passe des structures en tant que paramètres en entrée. |
|
Structure par référence. |
Passe des structures en tant que paramètres en entrée/sortie. |
|
Structure avec des structures imbriquées (aplaties) |
Passe une classe qui représente une structure avec des structures imbriquées dans la fonction non managée. La structure est aplatie en une grande structure dans le prototype managé. |
|
Structure avec des structures imbriquées (non aplaties) |
Passe une structure avec une structure incorporée. |
|
Structure dotée d'un pointeur vers une autre structure. |
Passe une structure contenant un pointeur vers la seconde structure comme membre. |
|
Tableau de structures avec des entiers par valeur. |
Passe un tableau de structures contenant uniquement des entiers comme paramètre en entrée/sortie. Les membres du tableau peuvent être changés. |
|
Tableau de structures avec des entiers et des chaînes par référence. |
Passe un tableau de structures contenant des entiers et des chaînes comme paramètre Out. La fonction appelée alloue de la mémoire pour le tableau. |
|
Unions avec des types valeur. |
Passe des unions avec des types valeur (entier et double). |
|
Unions avec des types mélangés. |
Passe des unions avec des types mélangés (entier et chaîne). |
|
Valeurs Null en structure. |
Passe une référence null (Nothing en Visual Basic) au lieu d'une référence à un type valeur. |
Voir aussi
Concepts
Types de données d'appel de code non managé
Marshaling des tableaux de types