형식 지원
업데이트: 2007년 11월
다음 표에서는 형식 범주 및 형식을 관리되는 컨텍스트에서 관리되지 않는 컨텍스트로 마샬링한 결과를 보여 줍니다.
형식 범주
다음 표에서는 이후 단원에 언급된 몇 가지 형식을 분류하여 설명합니다.
형식 |
설명 |
---|---|
값 형식 |
값 형식에는 설명되는 데이터가 직접 포함되며 값 형식을 위한 메모리는 스택에서 할당됩니다. |
기본 제공 값 형식 |
Int32, UInt32, Boolean, Single 등이 있습니다. 전체 목록을 보려면 .NET Framework 클래스 라이브러리 개요를 참조하십시오. |
사용자 정의 값 형식 |
System.ValueType에서 파생되었습니다. C#에서 사용자 정의 값 형식은 struct 키워드를 사용하여 정의됩니다. |
열거형 |
열거형도 값 형식에 해당합니다. .NET Framework에서 열거형의 내부 형식은 Int32입니다. 그러나 다른 내부 형식을 사용하도록 열거형을 명시적으로 정의할 수 있으며, 이 경우 Char를 제외한 모든 정수 계열 내부 형식을 사용할 수 있습니다. |
참조 형식 |
참조 형식은 힙에 할당된 개체 메모리에 대한 참조를 저장하며 기본 제공 클래스, 사용자 정의 클래스, 배열, boxed 값 형식, 대리자 등이 될 수 있습니다. |
관리되는 형식에서 관리되지 않는 형식으로 마샬링
다음 표에서는 관리되는 형식을 관리되지 않는 형식으로 마샬링한 결과를 보여 줍니다.
관리되는 형식 |
관리되지 않는 형식 |
---|---|
값 형식(32비트 초과) |
동일 |
값 형식에 대한 참조 |
값 형식에 대한 포인터 |
64비트 정수 |
값 형식 배열에 대한 포인터 |
부동 소수점 수 |
부동 소수점 수 |
값 형식 배열 |
값 형식 배열에 대한 포인터 |
열거형의 내부 값 형식 |
|
ANSI 문자열 |
바이트 배열로 전달된 경우에만 지원됨 |
null로 끝나는 유니코드(wchar_t) 문자 배열에 대한 포인터. 비관리 코드에서 배열을 수정하면 안 됩니다. |
|
참조 형식 |
개체의 기본 데이터 필드에 대한 포인터. 참조 형식은 항상 순차적으로 마샬링되며 값 형식 멤버가 포함된 개체만 마샬링할 수 있습니다. |
참조 형식에 대한 참조 |
지원되지 않음 |
참조 형식 배열 |
지원되지 않음 |
대리자 |
함수 포인터 |
null로 끝나는 유니코드(wchart_t) 문자 배열에 대한 포인터. 비관리 코드에서 배열을 수정할 수 있습니다. |
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[] |
지원 안 함 |
Variant 형식 지원
다음 표에서는 관리 코드를 비관리 코드로 마샬링하기 위해 IDispatch 마샬러가 지원하는 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 |