marshal_as
此方法會在原生與受控環境之間轉換數據。
語法
To_Type marshal_as<To_Type>(
From_Type input
);
參數
input
[in]您想要封送處理至 To_Type
變數的值。
傳回值
型 To_Type
別的變數,其為的轉換值 input
。
備註
這個方法是一種簡化的方式,可將數據在原生和 Managed 類型之間轉換。 若要判斷支援哪些數據類型,請參閱 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