Compartilhar via


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

Confira também

Visão geral de marshaling no C++
Classe marshal_context