Marshallen von Klassen, Strukturen und Unions
Aktualisiert: November 2007
Klassen und Strukturen weisen in .NET Framework Ähnlichkeiten auf. Beide können über Felder, Eigenschaften und Ereignisse verfügen. sowie über statische und nicht statische Methoden verfügen. Einen wichtigen Unterschied stellt jedoch die Tatsache dar, dass Strukturen Werttypen und Klassen Verweistypen sind.
In der folgenden Tabelle finden Sie Marshalloptionen für Klassen, Strukturen und Unions, eine Beschreibung ihrer Verwendung sowie einen Link zum entsprechenden Plattformaufrufbeispiel.
Typ |
Beschreibung |
Beispiel |
---|---|---|
Klasse durch einen Wert. |
Übergibt eine Klasse mit Ganzzahlmembern als In/Out-Parameter, wie der verwaltete Fall. |
|
Struktur durch einen Wert. |
Übergibt Strukturen als In-Parameter. |
|
Struktur durch einen Verweis. |
Übergibt Strukturen als In/Out-Parameter. |
|
Struktur mit geschachtelten Strukturen (vereinfacht). |
Übergibt eine Klasse, die eine Struktur mit geschachtelten Strukturen in der nicht verwalteten Funktion darstellt. Die Struktur wird im verwalteten Prototyp zu einer einzigen großen Struktur vereinfacht. |
|
Struktur mit geschachtelten Strukturen (nicht vereinfacht). |
Übergibt eine Struktur mit einer eingebetteten Struktur. |
|
Struktur mit einem Zeiger auf eine andere Struktur. |
Übergibt eine Struktur, die einen Zeiger auf eine weitere Struktur enthält, als Member. |
|
Array von Strukturen mit Ganzzahlen durch einen Wert. |
Übergibt ein Array von Strukturen, die nur Ganzzahlen enthalten, als In/Out-Parameter. Member des Arrays können geändert werden. |
|
Array von Strukturen mit Ganzzahlen und Zeichenfolgen durch einen Wert. |
Übergibt ein Array von Strukturen, die Ganzzahlen und Zeichenfolgen enthalten, als Out-Parameter. Die aufgerufene Funktion weist Speicher für das Array zu. |
|
Unions mit Werttypen. |
Übergibt Unions mit Werttypen (integer und double). |
|
Unions mit gemischten Typen. |
Übergibt Unions mit gemischten Typen (integer und string). |
|
NULL -Werte in Struktur. |
Übergibt einen NULL-Verweis (in Visual Basic Nothing) anstelle eines Verweises auf einen Werttyp. |
Siehe auch
Konzepte
Datentypen für den Plattformaufruf
Verschiedene Marshallingbeispiele