이 문서는 수동으로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. |
번역
원본
|
클래스, 구조체 및 공용 구조체 마샬링
.NET Framework에서 클래스와 구조체는 유사합니다. 둘 모두 필드, 속성 및 이벤트가 있으며, 정적 메서드와 비정적 메서드를 가질 수도 있습니다. 한 가지 중요한 차이점은 구조체는 값 형식이고 클래스는 참조 형식이라는 점입니다.
다음 표에서는 클래스, 구조체 및 공용 구조체의 마샬링 옵션을 보여 주고 각 옵션의 용도에 대해 설명한 다음 해당되는 플랫폼 호출 샘플의 링크를 제공합니다.
형식 | 설명 | 샘플 |
|---|---|---|
클래스를 값으로 | 정수 멤버가 포함된 클래스를 관리되는 경우와 마찬가지로 In/Out 매개 변수를 통해 전달합니다. | |
구조체를 값으로 | 구조체를 In 매개 변수를 통해 전달합니다. | |
구조체를 참조로 | 구조체를 In/Out 매개 변수를 통해 전달합니다. | |
중첩 구조체가 있는 구조체(결합 구조체) | 중첩 구조체가 있는 구조체를 나타내는 클래스를 관리되지 않는 함수에서 전달합니다. 관리되는 프로토타입에서 이 구조체는 하나의 큰 구조체로 결합됩니다. | |
중첩 구조체가 있는 구조체(결합되지 않는 구조체) | 포함된 구조체가 있는 구조체를 전달합니다. | |
다른 구조체에 대한 포인터가 있는 구조체 | 다른 구조체에 대한 포인터가 멤버로 포함된 구조체를 전달합니다. | |
정수가 포함된 구조체 배열을 값으로 | 정수만 포함된 구조체의 배열을 In/Out 매개 변수를 통해 전달합니다. 배열의 멤버는 변경할 수 없습니다. | |
정수 및 문자열이 포함된 구조체 배열을 참조로 | 정수 및 문자열이 포함된 구조체 배열을 Out 매개 변수를 통해 전달합니다. 호출되는 함수에서는 해당 배열에 메모리를 할당합니다. | |
값 형식이 있는 공용 구조체 | 값 형식(정수 및 double)이 있는 공용 구조체를 전달합니다. | |
혼합 형식이 있는 공용 구조체 | 혼합 형식(정수 및 문자열)이 있는 공용 구조체를 전달합니다. | |
구조체에서 null 값 | 값 형식에 대한 참조 대신 null 참조(Visual Basic에서는 Nothing)를 전달합니다. |