次の方法で共有


型のサポート

更新 : 2007 年 11 月

次の表は、型のカテゴリと、マネージ コンテキストからアンマネージ コンテキストに型をマーシャリングしたときの結果です。

型のカテゴリ

次の表は、次のセクションで扱ういくつかの型の説明です。

説明

値型

値型は記述されるデータを直接含み、値型のメモリはスタックから割り当てられます。

組み込みの値型

Int32UInt32BooleanSingle など。完全な一覧については、「.NET Framework クラス ライブラリの概要」を参照してください。

ユーザー定義の値型

System.ValueType の派生クラス。C# では、ユーザー定義の値型は、struct キーワードを使用して定義されます。

列挙型

列挙型も値型です。.NET Framework の列挙型の基になる型は Int32 です。ただし、列挙型が別の型に基づくように明示的に定義できます。基になる型としてサポートされているのは、Char 以外の整数ベースの型です。

参照型

参照型は、ヒープ上に割り当てられた、オブジェクトのメモリへの参照を格納します。組み込みクラス、ユーザー定義クラス、配列、ボックス化された値型、デリゲートなどです。

マネージ型からアンマネージ型へのマーシャリングの結果

次の表は、マネージ型からアンマネージ型へのマーシャリングの結果です。

マネージ型

アンマネージ型

値型 (32 ビットよりも大きい場合を含む)

変更なし。

値型への参照

値型へのポインタ。

64 ビット整数

値型の配列へのポインタ。

浮動小数点数

浮動小数点数。

値型の配列

値型の配列へのポインタ。

Enum

列挙型の基になる値型。

ANSI 文字列

バイトの配列として渡された場合にだけサポートされます。

String

Unicode (wchar_t) 文字の、null で終わる配列へのポインタ。アンマネージ コードは、配列を変更できません。

参照型

オブジェクトの基になるデータ フィールドへのポインタ。参照型は常に連続してマーシャリングされます。値型メンバを含むオブジェクトだけをマーシャリングできます。

参照型への参照

サポートなし

参照型の配列

サポートなし

デリゲート

関数ポインタ

StringBuilder

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 *

サポートなし

StringBuilder

StringBuilder

WCHAR *

サポートなし

DateTime

DateTime

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

参照

その他の技術情報

.NET Compact Framework のマーシャリング サポート