Share via


클래스, 구조체 및 공용 구조체 마샬링

업데이트: 2007년 11월

.NET Framework에서 클래스와 구조체는 유사합니다. 둘 모두 필드, 속성 및 이벤트가 있으며, 정적 메서드와 비정적 메서드를 가질 수도 있습니다. 한 가지 중요한 차이점은 구조체는 값 형식이고 클래스는 참조 형식이라는 점입니다.

다음 표에서는 클래스, 구조체 및 공용 구조체의 마샬링 옵션을 보여 주고 각 옵션의 용도에 대해 설명한 다음 해당되는 플랫폼 호출 샘플의 링크를 제공합니다.

형식

설명

샘플

클래스를 값으로

정수 멤버가 포함된 클래스를 관리되는 경우와 마찬가지로 In/Out 매개 변수를 통해 전달합니다.

SysTime

구조체를 값으로

구조체를 In 매개 변수를 통해 전달합니다.

구조체

구조체를 참조로

구조체를 In/Out 매개 변수를 통해 전달합니다.

OSInfo

중첩 구조체가 있는 구조체(결합 구조체)

중첩 구조체가 있는 구조체를 나타내는 클래스를 관리되지 않는 함수에서 전달합니다. 관리되는 프로토타입에서 이 구조체는 하나의 큰 구조체로 결합됩니다.

FindFile

중첩 구조체가 있는 구조체(결합되지 않는 구조체)

포함된 구조체가 있는 구조체를 전달합니다.

구조체

다른 구조체에 대한 포인터가 있는 구조체

다른 구조체에 대한 포인터가 멤버로 포함된 구조체를 전달합니다.

구조체

정수가 포함된 구조체 배열을 값으로

정수만 포함된 구조체의 배열을 In/Out 매개 변수를 통해 전달합니다. 배열의 멤버는 변경할 수 없습니다.

배열

정수 및 문자열이 포함된 구조체 배열을 참조로

정수 및 문자열이 포함된 구조체 배열을 Out 매개 변수를 통해 전달합니다. 호출되는 함수에서는 해당 배열에 메모리를 할당합니다.

OutArrayOfStructs

값 형식이 있는 공용 구조체

값 형식(정수 및 double)이 있는 공용 구조체를 전달합니다.

Unions

혼합 형식이 있는 공용 구조체

혼합 형식(정수 및 문자열)이 있는 공용 구조체를 전달합니다.

Unions

구조체에서 null 값

값 형식에 대한 참조 대신 null 참조(Visual Basic에서는 Nothing)를 전달합니다.

HandleRef

참고 항목

개념

플랫폼 호출 데이터 형식

문자열 마샬링

형식 배열 마샬링

기타 마샬링 샘플

기타 리소스

플랫폼 호출을 사용하여 데이터 마샬링