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