次の方法で共有


marshal_as

このメソッドは、ネイティブ環境とマネージド環境の間でデータを変換します。

構文

To_Type marshal_as<To_Type>(
   From_Type input
);

パラメーター

input
[入力] To_Type 変数にマーシャリングしようとする値。

戻り値

To_Typeの値を変換した後の input 型の変数。

解説

このメソッドは、ネイティブ型とマネージド型の間でデータを変換する簡素化された方法を提供します。 サポートされているデータ型を確認するには、「C++ におけるマーシャリングの概要」をご覧ください。 一部のデータ変換では、コンテキストが必要です。 marshal_context クラスを使って、それらのデータ型を変換できます。

サポートされていないデータ型のペアをマーシャリングしようとすると、コンパイル時に marshal_as でエラー C4996 が発生します。 詳細については、このエラーと共に提供されるメッセージを参照してください。 C4996 エラーは、非推奨の関数の場合に加えて、他の状況で生成される可能性もあります。 このエラーの 1 つの例は、サポートされていない 2 つのデータ型をマーシャリングしようとする場合です。

マーシャリング ライブラリは、複数のヘッダー ファイルで構成されます。 どの変換でもただ 1 つのファイルが必要ですが、他の変換で必要とされる追加ファイルをインクルードすることもできます。 どのファイルにどの変換が関連付けられているかを確認するには、Marshaling Overview の表を参照してください。 どの変換を行おうとするかにかかわりなく、名前空間の要件が常に有効になります。

入力パラメーターが null の場合、System::ArgumentNullException(_EXCEPTION_NULLPTR) をスローします。

この例では、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 クラス