marshal_as
Cette méthode convertit les données entre les environnements natifs et managés.
Syntaxe
To_Type marshal_as<To_Type>(
From_Type input
);
Paramètres
input
[in] Valeur à marshaler sur une To_Type
variable.
Valeur de retour
Variable de type To_Type
qui est la valeur convertie de input
.
Notes
Cette méthode est un moyen simplifié de convertir des données entre les types natifs et managés. Pour déterminer quels types de données sont pris en charge, consultez Vue d’ensemble du marshaling en C++. Certaines conversions de données nécessitent un contexte. Vous pouvez convertir ces types de données à l’aide de la classe marshal_context.
Si vous essayez de marshaler une paire de types de données qui ne sont pas pris en charge, marshal_as
génère une erreur C4996 au moment de la compilation. Lisez le message fourni avec cette erreur pour plus d’informations. L’erreur C4996
peut être générée pour plus que de simplement déprécier les fonctions. Par exemple, nous essayons de marshaler une paire de types de données qui ne sont pas pris en charge.
La bibliothèque de marshaling se compose de plusieurs fichiers d’en-tête. Toute conversion ne nécessite qu’un seul fichier, mais vous pouvez inclure des fichiers supplémentaires si vous avez besoin d’autres conversions. Pour voir quelles conversions sont associées aux fichiers, recherchez dans la table dans Marshaling Overview
. Quelle que soit la conversion que vous souhaitez effectuer, l’exigence d’espace de noms est toujours en vigueur.
Lève System::ArgumentNullException(_EXCEPTION_NULLPTR)
si le paramètre d’entrée a la valeur Null.
Exemple
Cet exemple marshale d’un const char*
type de variable à un System::String
type de variable.
// 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;
}
Spécifications
Fichier d’en-tête :<msclr\marshal.h>, <msclr\marshal_windows.h>, <msclr\marshal_cppstd.h> ou <msclr\marshal_atl.h>
Espace de noms : msclr ::interop