更新 : 2007 年 11 月
次の表は、型のカテゴリと、マネージ コンテキストからアンマネージ コンテキストに型をマーシャリングしたときの結果です。
型のカテゴリ
次の表は、次のセクションで扱ういくつかの型の説明です。
型 |
説明 |
---|---|
値型 |
値型は記述されるデータを直接含み、値型のメモリはスタックから割り当てられます。 |
組み込みの値型 |
Int32、UInt32、Boolean、Single など。完全な一覧については、「.NET Framework クラス ライブラリの概要」を参照してください。 |
ユーザー定義の値型 |
System.ValueType の派生クラス。C# では、ユーザー定義の値型は、struct キーワードを使用して定義されます。 |
列挙型 |
列挙型も値型です。.NET Framework の列挙型の基になる型は Int32 です。ただし、列挙型が別の型に基づくように明示的に定義できます。基になる型としてサポートされているのは、Char 以外の整数ベースの型です。 |
参照型 |
参照型は、ヒープ上に割り当てられた、オブジェクトのメモリへの参照を格納します。組み込みクラス、ユーザー定義クラス、配列、ボックス化された値型、デリゲートなどです。 |
マネージ型からアンマネージ型へのマーシャリングの結果
次の表は、マネージ型からアンマネージ型へのマーシャリングの結果です。
マネージ型 |
アンマネージ型 |
---|---|
値型 (32 ビットよりも大きい場合を含む) |
変更なし。 |
値型への参照 |
値型へのポインタ。 |
64 ビット整数 |
値型の配列へのポインタ。 |
浮動小数点数 |
浮動小数点数。 |
値型の配列 |
値型の配列へのポインタ。 |
列挙型の基になる値型。 |
|
ANSI 文字列 |
バイトの配列として渡された場合にだけサポートされます。 |
Unicode (wchar_t) 文字の、null で終わる配列へのポインタ。アンマネージ コードは、配列を変更できません。 |
|
参照型 |
オブジェクトの基になるデータ フィールドへのポインタ。参照型は常に連続してマーシャリングされます。値型メンバを含むオブジェクトだけをマーシャリングできます。 |
参照型への参照 |
サポートなし |
参照型の配列 |
サポートなし |
デリゲート |
関数ポインタ |
Unicode (wchart_t) 文字の、null で終わる配列へのポインタ。アンマネージ コードは、配列を変更できます。 |
C# および Visual Basic でのマーシャリング結果
次の表は、アンマネージ コードをホストするオペレーティング システムが Windows CE の場合に、マーシャラがマネージ型に対して使用する C++ と Visual Basic の型です。この一覧がすべてではありません。
マネージ コード C# の型 |
マネージ コード Visual Basic の型 |
アンマネージ コード ByVal |
アンマネージ コード ByRef |
---|---|---|---|
bool |
Boolean |
BYTE |
BYTE * |
int |
Integer |
INT32 |
INT32 * |
short |
Short |
SHORT |
SHORT * |
long |
Long |
LONG |
INT64 * |
char |
Char |
WCHAR |
WCHAR * |
float |
Single |
FLOAT |
FLOAT * |
double |
Double |
DOUBLE |
DOUBLE * |
string |
String |
WCHAR * |
サポートなし |
WCHAR * |
サポートなし |
||
DATE |
DATE * |
||
int[] |
Integer() |
INT32 *, INT32[] |
サポートなし |
バリアント型のサポート
次の表は、IDispatch マーシャラによるマネージ コードからアンマネージ コードへのマーシャリングでサポートされる VARENUM 列挙型からの型の一覧です。すべての場合で、型はパラメータと戻り値の型の両方でサポートされます。サポートされていない型には、バリアント型には当てはまらない型が含まれます。
サポートされている型 |
サポートされていない型 |
---|---|
VT_I2 VT_I4 VT_CY VT_DATE VT_BSTR VT_DISPATCH VT_ERROR VT_BOOL VT_VARIANT VT_UNKNOWN VT_DECIMAL VT_I1 VT_UI1 VT_UI2 VT_UI4 VT_INT VT_UINT VT_ARRAY VT_R8 VT_R4 VT_CF VT_CLSID |
VT_EMPTY VT_NULL VT_I8 VT_UI8 VT_USERDEFINED VT_RECORD VT_SAFEARRAY (VT_ARRAY を使用) VT_PTR VT_HRESULT VT_VOID VT_CARRAY VT_LPSTR (VT_BSTR を使用) VT_LPWSTR (VT_BSTR を使用) VT_FILETIME VT_BLOB VT_STREAM VT_STORAGE VT_STREAMED_OBJECT VT_STORED_OBJECT VT_BLOB_OBJECT VT_VECTOR |