PackingSize 열거형
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
형식이 마샬링될 때 필드의 메모리 맞춤을 결정하는 두 요소 중 하나를 지정합니다.
이 열거형은 멤버 값의 비트 조합을 지원합니다.
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
- 상속
- 특성
필드
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영향을 줍니다. 압축 크기는 구조체 또는 클래스가 마샬링될 때 필드의 오프셋을 결정하는 두 가지 요소 중 하나입니다. 다른 요소는 필드의 유효 크기입니다. 필드의 오프셋을 확인하려면 다음을 수행합니다.
앞 필드의 크기를 이전 필드의 오프셋에 추가하여 오프셋의 최소값을 계산합니다.
필드의 자연스러운 압축 크기를 계산합니다. 필드가 간단한 데이터 형식인 경우 크기를 사용합니다. 필드가 배열인 경우 배열 요소의 크기를 사용합니다. 필드 자체가 구조체인 경우 해당 구조체의 압축 크기를 해당 구조체에서 가장 큰 필드의 크기와 비교하고 두 값 중 더 작은 값을 사용합니다.
2단계에서 계산된 압축 크기와 필드의 자연스러운 압축 크기를 비교하여 효과적인 압축 크기를 계산합니다. 두 숫자 중 더 작은 숫자를 사용합니다.
오프셋을 계산합니다. 오프셋은 최소값과 같거나 큰 첫 번째 메모리 위치이며, 3단계에서 계산된 유효 압축 크기의 배수입니다.
참고
클래스 또는 구조체의 모든 필드에 대해 오프셋이 계산되면 전체 크기가 압축 크기의 배수가 되도록 안쪽 여백이 추가됩니다.
예를 들어 및 를 byte
포함하는 클래스에서 압축 크기를 Size1
사용하여 필드의 byte
오프셋은 0이고 필드의 long
오프셋은 1long
입니다. 압축 크기가 Size4
이 long
면 필드에 오프셋 4(4)가 있습니다. 두 short
개의 필드가 포함된 클래스에서 모든 압축 크기를 사용하여 두 번째 short
필드의 오프셋은 2(2)입니다.
참고
압축 크기를 변경하면 필드가 크기의 배수가 아닌 오프셋에 정렬되는 경우 성능에 영향을 줄 수 있습니다.
적용 대상
.NET