Поделиться через


marshal_as

Этот метод преобразует данные между собственными и управляемыми средами.

Синтаксис

To_Type marshal_as<To_Type>(
   From_Type input
);

Параметры

input
[in] Значение, которое требуется маршалировать в переменную To_Type .

Возвращаемое значение

Переменная типа To_Type , которая является преобразованным значением input.

Замечания

Этот метод является упрощенным способом преобразования данных между собственными и управляемыми типами. Сведения о поддерживаемых типах данных см. в обзоре маршалинга в C++. Для некоторых преобразований данных требуется контекст. Эти типы данных можно преобразовать с помощью класса marshal_context.

Если вы пытаетесь маршалировать пару типов данных, которые не поддерживаются, marshal_as при компиляции будет возникать ошибка C4996 . Дополнительные сведения см. в сообщении, предоставленном этой ошибкой. Ошибка C4996 может быть создана для нескольких нерекомендуемых функций. Одним из примеров этого является попытка маршалировать пару типов данных, которые не поддерживаются.

Библиотека маршалинга состоит из нескольких файлов заголовков. Для любого преобразования требуется только один файл, но можно включить дополнительные файлы, если требуется для других преобразований. Чтобы узнать, какие преобразования связаны с файлами, просмотрите таблицу в Marshaling Overview. Независимо от того, какое преобразование требуется выполнить, требование пространства имен всегда действует.

Вызывает, System::ArgumentNullException(_EXCEPTION_NULLPTR) если входной параметр имеет значение NULL.

Пример

В этом примере маршалирует от типа переменной const char* 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;
}

Требования

Файл заголовка:<msclr\marshal.h, <msclr\marshal_windows.h>>, <msclr\marshal_cppstd.h> или <msclr\marshal_atl.h>

Пространство имен: msclr::interop

См. также

Общие сведения о маршалинге в C++
Класс marshal_context