marshal_as

Bei dieser Methode werden Daten zwischen systemeigenen und verwalteten Umgebungen konvertiert.

Syntax

To_Type marshal_as<To_Type>(
   From_Type input
);

Parameter

input
[in] Der Wert, den Sie einer To_Type Variablen marshallen möchten.

Rückgabewert

Eine Variable vom Typ To_Type, bei dem es sich um den konvertierten Wert von input handelt.

Hinweise

Diese Methode ist eine vereinfachte Möglichkeit zum Konvertieren von Daten zwischen systemeigenen und verwalteten Typen. Informationen dazu, welche Datentypen unterstützt werden, finden Sie unter Übersicht über Marshaling in C++. Einige Datenkonvertierungen erfordern einen Kontext. Sie können diese Datentypen mithilfe der marshal_context Klasse konvertieren.

Wenn Sie versuchen, ein nicht unterstütztes Datentyppaar zu marshallen, marshal_as wird zur Kompilierungszeit ein Fehler C4996 generiert. Weitere Informationen zu dem Fehler finden Sie in der zugehörigen Meldung. Der Fehler C4996 kann auch bei anderen Problemen als veralteten Funktionen generiert werden. Dazu zählt beispielsweise der Versuch, ein Paar von Datentypen zu marshallen, die nicht unterstützt werden.

Die Marshallingbibliothek besteht aus mehreren Headerdateien. Für jede Konvertierung ist nur eine Datei erforderlich, Sie können bei Bedarf jedoch zusätzliche Dateien für andere Konvertierungen einbinden. Informationen darüber, welche Konvertierungen welchen Dateien zugeordnet sind, finden Sie in der Tabelle in Marshaling Overview. Unabhängig vom Typ der durchzuführenden Konvertierung ist die Namespaceanforderung immer gültig.

Löst aus System::ArgumentNullException(_EXCEPTION_NULLPTR) , wenn der Eingabeparameter null ist.

Beispiel

In diesem Beispiel erfolgt das Marshalling von einem const char*- zu einem System::String-Variablentyp.

// marshal_as_test.cpp
// compile with: /clr
#include <stdlib.h>
#include <string.h>
#include <msclr\marshal.h>

using namespace System;
using namespace msclr::interop;

int main() {
   const char* message = "Test String to Marshal";
   String^ result;
   result = marshal_as<String^>( message );
   return 0;
}

Anforderungen

Headerdatei:<msclr\marshal.h>, <msclr\marshal_windows.h>, <msclr\marshal_cppstd.h> oder <msclr\marshal_atl.h>

Namespace: msclr::interop

Siehe auch

Übersicht über das Marshalling in C++
marshal_context-Klasse