marshal_as
Questo metodo converte i dati tra ambienti nativi e gestiti.
Sintassi
To_Type marshal_as<To_Type>(
From_Type input
);
Parametri
input
[in] Valore di cui si vuole effettuare il marshalling a una To_Type
variabile.
Valore restituito
Variabile di tipo To_Type
che rappresenta il valore convertito di input
.
Osservazioni:
Questo metodo è un modo semplificato per convertire i dati tra tipi nativi e gestiti. Per determinare i tipi di dati supportati, vedere Panoramica del marshalling in C++. Alcune conversioni di dati richiedono un contesto. È possibile convertire questi tipi di dati usando la classe marshal_context.
Se si tenta di effettuare il marshalling di una coppia di tipi di dati non supportati, marshal_as
verrà generato un errore C4996 in fase di compilazione. Per altre informazioni, leggere il messaggio fornito con questo errore. L'errore C4996
può essere generato per più di una semplice funzione deprecata. Un esempio di questo è il tentativo di effettuare il marshalling di una coppia di tipi di dati non supportati.
La libreria di marshalling è costituita da diversi file di intestazione. Qualsiasi conversione richiede un solo file, ma è possibile includere file aggiuntivi se è necessario per altre conversioni. Per vedere quali conversioni sono associate ai file, cercare nella tabella in Marshaling Overview
. Indipendentemente dalla conversione da eseguire, il requisito dello spazio dei nomi è sempre attivo.
System::ArgumentNullException(_EXCEPTION_NULLPTR)
Genera un'eccezione se il parametro di input è Null.
Esempio
In questo esempio viene eseguita il marshalling da un const char*
oggetto a un System::String
tipo di variabile.
// 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;
}
Requisiti
File di intestazione:<msclr\marshal.h>, <msclr\marshal_windows.h>, <msclr\marshal_cppstd.h> o <msclr\marshal_atl.h>
Spazio dei nomi: msclr::interop