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