다음을 통해 공유


형식 지원

업데이트: 2007년 11월

다음 표에서는 형식 범주 및 형식을 관리되는 컨텍스트에서 관리되지 않는 컨텍스트로 마샬링한 결과를 보여 줍니다.

형식 범주

다음 표에서는 이후 단원에 언급된 몇 가지 형식을 분류하여 설명합니다.

형식

설명

값 형식

값 형식에는 설명되는 데이터가 직접 포함되며 값 형식을 위한 메모리는 스택에서 할당됩니다.

기본 제공 값 형식

Int32, UInt32, Boolean, Single 등이 있습니다. 전체 목록을 보려면 .NET Framework 클래스 라이브러리 개요를 참조하십시오.

사용자 정의 값 형식

System.ValueType에서 파생되었습니다. C#에서 사용자 정의 값 형식은 struct 키워드를 사용하여 정의됩니다.

열거형

열거형도 값 형식에 해당합니다. .NET Framework에서 열거형의 내부 형식은 Int32입니다. 그러나 다른 내부 형식을 사용하도록 열거형을 명시적으로 정의할 수 있으며, 이 경우 Char를 제외한 모든 정수 계열 내부 형식을 사용할 수 있습니다.

참조 형식

참조 형식은 힙에 할당된 개체 메모리에 대한 참조를 저장하며 기본 제공 클래스, 사용자 정의 클래스, 배열, boxed 값 형식, 대리자 등이 될 수 있습니다.

관리되는 형식에서 관리되지 않는 형식으로 마샬링

다음 표에서는 관리되는 형식을 관리되지 않는 형식으로 마샬링한 결과를 보여 줍니다.

관리되는 형식

관리되지 않는 형식

값 형식(32비트 초과)

동일

값 형식에 대한 참조

값 형식에 대한 포인터

64비트 정수

값 형식 배열에 대한 포인터

부동 소수점 수

부동 소수점 수

값 형식 배열

값 형식 배열에 대한 포인터

Enum

열거형의 내부 값 형식

ANSI 문자열

바이트 배열로 전달된 경우에만 지원됨

String

null로 끝나는 유니코드(wchar_t) 문자 배열에 대한 포인터. 비관리 코드에서 배열을 수정하면 안 됩니다.

참조 형식

개체의 기본 데이터 필드에 대한 포인터. 참조 형식은 항상 순차적으로 마샬링되며 값 형식 멤버가 포함된 개체만 마샬링할 수 있습니다.

참조 형식에 대한 참조

지원되지 않음

참조 형식 배열

지원되지 않음

대리자

함수 포인터

StringBuilder

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 *

지원 안 함

StringBuilder

StringBuilder

WCHAR *

지원 안 함

DateTime

DateTime

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

참고 항목

기타 리소스

.NET Compact Framework의 마샬링 지원