共用方式為


型別支援

更新:2007 年 11 月

下表描述從 Managed 內容封送處理 (Marshaling) 型別至 Unmanaged 內容的型別分類和結果。

型別分類

下表提供下列各節中討論的數個型別之描述和說明。

型別

說明

實值型別

實值型別直接包含描述的資料,而實值型別的記憶體是從堆疊配置。

內建實值型別

Int32UInt32BooleanSingle 及其他等等。如需完整清單,請參閱 .NET Framework 類別庫概觀

使用者定義實值型別

衍生自 System.ValueType。在 C# 中,會使用 struct 關鍵字來定義使用者定義的實值型別。

列舉型別

列舉型別也都是實值型別。在 .NET Framework 中列舉型別的基礎型別為 Int32。然而,您可以明確地定義列舉型別具有另一個基礎型別。支援的基礎型別,包括 Char 以外的任何整數類基底型別 (Base Type)。

參考型別

參考型別會儲存在堆積 (Heap) 中配置的物件記憶體參考。這些型別可能是內建類別、使用者定義類別、陣列、Boxed 實值型別、委派等等。

從 Managed 至 Unmanaged 型別

下表描述從 Managed 型別封送處理至 Unmanaged 型別的結果。

Managed 型別

Unmanaged 型別

實值型別 (包括大於 32 位元者)

未修改。

實值型別的參考

實值型別的指標。

64 位元整數

實值型別陣列的指標。

浮點數值

浮點數值

實值型別的陣列

實值型別陣列的指標。

Enum

列舉型別的基礎實值型別。

ANSI 字串

只有在以位元組陣列傳遞的情況下才支援。

String

Unicode (wchar_t) 字元之 Null 結尾陣列的指標。Unmanaged 程式碼不應該修改陣列。

參考型別

物件的基礎資料欄位指標。參考型別永遠是以循序方式進行封送處理。您只能封送處理含有實值型別成員的物件。

參考型別的參考

不支援。

參考型別的陣列

不支援。

委派

函數指標

StringBuilder

Unicode (wchart_t) 字元之 Null 結尾陣列的指標。Unmanaged 程式碼可以修改陣列。

C# 和 Visual Basic 封送處理結果

下表列出封送處理器針對 Managed 型別,並以 Windows CE 做為作業系統裝載 Unmanaged 程式碼,所使用的 C# 和 Visual Basic 型別。這份清單並不是完整的清單。

Managed 程式碼

C# 型別

Managed 程式碼

Visual Basic 型別

Unmanaged 程式碼

ByVal

Unmanaged 程式碼

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[]

不支援

Variant 型別支援

下表列出 IDispatch 封送處理器對於從 Managed 程式碼封送處理至 Unmanaged 程式碼,所支援之 VARENUM 列舉型別的型別。在所有情況下,對於參數和傳回型別都支援這些型別。不支援的型別包括不適用於 Variant 型別者。

支援的型別

不支援的型別

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 中的封送處理支援