Freigeben über


Typunterstützung

Aktualisiert: November 2007

In den folgenden Tabellen werden Kategorien von Typen und die Ergebnisse beim Marshalling von Typen von verwalteten in nicht verwaltete Kontexte beschrieben.

Typkategorien

In der folgenden Tabelle finden Sie Beschreibungen und Erklärungen zu einigen der Typen, die in den folgenden Abschnitten behandelt werden.

Typ

Beschreibung

Werttypen

Werttypen enthalten direkt die beschriebenen Daten, und der Speicher für einen Werttyp wird aus dem Stapel zugeordnet.

Integrierte Werttypen

Int32, UInt32, Boolean, Single usw. Eine vollständige Liste finden Sie unter Übersicht über die .NET Framework-Klassenbibliothek.

Benutzerdefinierte Werttypen

Abgeleitet von System.ValueType In C# wird ein benutzerdefinierter Werttyp mit dem struct-Schlüsselwort definiert.

Enumerationen

Enumerationen sind ebenfalls Werttypen. Der zugrunde liegende Typ einer Enumeration in .NET Framework ist Int32. Sie können für eine Enumeration jedoch explizit einen anderen zugrunde liegenden Typ definieren. Als zugrunde liegende Typen werden alle ganzzahligen Basistypen unterstützt, ausgenommen Char.

Verweistyp

Verweistypen speichern einen Verweis auf den Speicher eines Objekts, der im Heap zugeordnet wurde. Hierbei kann es sich um integrierte Klassen, benutzerdefinierte Klassen, Arrays, geschachtelte Werttypen, Delegaten usw. handeln.

Marshalling von verwalteten in nicht verwaltete Typen

In der folgenden Tabelle wird das Ergebnis beschrieben, das beim Marshalling von verwalteten in nicht verwaltete Typen zustande kommt.

Verwalteter Typ

Nicht verwalteter Typ

Werttyp (einschließlich von Typen größer als 32 Bits)

Unverändert.

Verweis auf Werttyp

Zeiger auf den Werttyp.

Ganze Zahl mit 64 Bits

Zeiger auf ein Array aus Werttypen.

Gleitkommazahl

Gleitkommazahl.

Array aus Werttypen

Zeiger auf ein Array aus Werttypen.

Enum

Zugrunde liegender Werttyp der Enumeration.

ANSI-Zeichenfolge

Nur unterstützt, wenn sie als Bytearray übergeben werden.

String

Zeiger auf Unicode-Zeichenarray mit NULL-Terminator (wchar_t). Nicht verwalteter Code sollte das Array nicht verändern.

Verweistyp

Zeiger auf die zugrunde liegenden Datenfelder des Objekts. Verweistypen werden stets sequenziell gemarshallt. Sie können nur Objekte marshallen, die Werttypmember enthalten.

Verweis auf Verweistyp

Nicht unterstützt.

Array aus Verweistypen

Nicht unterstützt.

Delegat

Funktionszeiger

StringBuilder

Zeiger auf Unicode-Zeichenarray mit NULL-Terminator (wchart_t). Nicht verwalteter Code kann das Array verändern.

Marshallingergebnisse in C# und Visual Basic

In der folgenden Tabelle werden die C#- und Visual Basic-Typen aufgeführt, die vom Marshaller für verwaltete Typen verwendet werden. Dabei ist Windows CE das Betriebssystem, auf dem der nicht verwaltete Code bereitsteht. Diese Liste ist nicht vollständig.

Verwalteter Code

C#-Typen

Verwalteter Code

Visual Basic-Typen

Nicht verwalteter Code

ByVal

Nicht verwalteter Code

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 *

Nicht unterstützt

StringBuilder

StringBuilder

WCHAR *

Nicht unterstützt

DateTime

DateTime

DATE

DATE *

int[]

Integer()

INT32 *, INT32[]

Nicht unterstützt

Unterstützung des Varianttyps

In der folgenden Tabelle werden die Typen der VARENUM-Enumeration aufgeführt, die vom IDispatch-Marshaller für das Marshalling von verwaltetem in nicht verwalteten Code unterstützt werden. In allen Fällen werden die Typen sowohl für Parameter als auch für Rückgabetypen unterstützt. Zu den nicht unterstützten Typen gehören diejenigen, die nicht auf Varianttypen anwendbar sind.

Unterstützte Typen

Nicht unterstützte Typen

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 (verwenden Sie VT_ARRAY)

VT_PTR

VT_HRESULT

VT_VOID

VT_CARRAY

VT_LPSTR (verwenden Sie VT_BSTR)

VT_LPWSTR (verwenden Sie VT_BSTR)

VT_FILETIME

VT_BLOB

VT_STREAM

VT_STORAGE

VT_STREAMED_OBJECT

VT_STORED_OBJECT

VT_BLOB_OBJECT

VT_VECTOR

Siehe auch

Weitere Ressourcen

Unterstützung von Marshalling in .NET Compact Framework