marshal_as
Esse método converte dados entre ambientes nativos e gerenciados.
Sintaxe
To_Type marshal_as<To_Type>(
From_Type input
);
Parâmetros
input
[entrada] O valor cujo marshal você deseja fazer para uma variável To_Type
.
Valor de retorno
Uma variável de tipo To_Type
que é o valor convertido de input
.
Comentários
Esse método é uma maneira simplificada de converter dados entre tipos nativos e gerenciados. Para determinar quais tipos de dados são compatíveis, confira Visão geral do marshaling no C++. Algumas conversões de dados exigem um contexto. Você pode converter esses tipos de dados usando a Classe marshal_context.
Se você tentar empacotar um par de tipos de dados incompatíveis, marshal_as
gerará um erro C4996 no tempo de compilação. Leia a mensagem fornecida com esse erro para obter mais informações. O erro C4996
pode ser gerado para mais do que apenas funções preteridas. Um exemplo disso é tentar empacotar um par de tipos de dados incompatíveis.
A biblioteca de marshaling consiste em vários arquivos de cabeçalho. Qualquer conversão individual requer apenas um arquivo, mas você pode incluir arquivos adicionais se precisar deles para outras conversões. Para ver quais conversões estão associadas a quais arquivos, examine a tabela em Marshaling Overview
. Independentemente da conversão que você deseja fazer, o requisito de namespace está sempre em vigor.
Gera System::ArgumentNullException(_EXCEPTION_NULLPTR)
se o parâmetro de entrada é nulo.
Exemplo
Este exemplo realiza marshals de um const char*
para um tipo variável System::String
.
// 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;
}
Requisitos
Arquivo de cabeçalho:<msclr\marshal.h>, <msclr\marshal_windows.h>, <msclr\marshal_cppstd.h> ou <msclr\marshal_atl.h>
Namespace: msclr::interop