다음을 통해 공유


PackingSize 열거형

정의

형식이 마샬링될 때 필드의 메모리 맞춤을 결정하는 두 요소 중 하나를 지정합니다.

이 열거형은 멤버 값의 비트 조합을 지원합니다.

public enum class PackingSize
public enum PackingSize
[System.Flags]
[System.Serializable]
public enum PackingSize
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public enum PackingSize
type PackingSize = 
[<System.Flags>]
[<System.Serializable>]
type PackingSize = 
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type PackingSize = 
Public Enum PackingSize
상속
PackingSize
특성

필드

Size1 1

압축 크기가 1바이트입니다.

Size128 128

압축 크기가 128바이트입니다.

Size16 16

압축 크기가 16바이트입니다.

Size2 2

압축 크기가 2바이트입니다.

Size32 32

압축 크기가 32바이트입니다.

Size4 4

압축 크기가 4바이트입니다.

Size64 64

압축 크기가 64바이트입니다.

Size8 8

압축 크기가 8바이트입니다.

Unspecified 0

압축 크기가 지정되지 않았습니다.

설명

압축 크기는 구조체의 필드와 organization 인 클래스의 필드 맞춤에 LayoutKind.Sequential영향을 줍니다. 압축 크기는 구조체 또는 클래스가 마샬링될 때 필드의 오프셋을 결정하는 두 가지 요소 중 하나입니다. 다른 요소는 필드의 유효 크기입니다. 필드의 오프셋을 확인하려면 다음을 수행합니다.

  1. 앞 필드의 크기를 이전 필드의 오프셋에 추가하여 오프셋의 최소값을 계산합니다.

  2. 필드의 자연스러운 압축 크기를 계산합니다. 필드가 간단한 데이터 형식인 경우 크기를 사용합니다. 필드가 배열인 경우 배열 요소의 크기를 사용합니다. 필드 자체가 구조체인 경우 해당 구조체의 압축 크기를 해당 구조체에서 가장 큰 필드의 크기와 비교하고 두 값 중 더 작은 값을 사용합니다.

  3. 2단계에서 계산된 압축 크기와 필드의 자연스러운 압축 크기를 비교하여 효과적인 압축 크기를 계산합니다. 두 숫자 중 더 작은 숫자를 사용합니다.

  4. 오프셋을 계산합니다. 오프셋은 최소값과 같거나 큰 첫 번째 메모리 위치이며, 3단계에서 계산된 유효 압축 크기의 배수입니다.

참고

클래스 또는 구조체의 모든 필드에 대해 오프셋이 계산되면 전체 크기가 압축 크기의 배수가 되도록 안쪽 여백이 추가됩니다.

예를 들어 및 를 byte 포함하는 클래스에서 압축 크기를 Size1사용하여 필드의 byte 오프셋은 0이고 필드의 long 오프셋은 1long입니다. 압축 크기가 Size4long 면 필드에 오프셋 4(4)가 있습니다. 두 short 개의 필드가 포함된 클래스에서 모든 압축 크기를 사용하여 두 번째 short 필드의 오프셋은 2(2)입니다.

참고

압축 크기를 변경하면 필드가 크기의 배수가 아닌 오프셋에 정렬되는 경우 성능에 영향을 줄 수 있습니다.

적용 대상