정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

PackingSize 열거형

2013-12-13

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

Namespace:  System.Reflection.Emit
어셈블리:  mscorlib(mscorlib.dll)

public enum PackingSize

멤버 이름설명
Size1압축 크기가 1바이트입니다.
Size128압축 크기가 128바이트입니다.
Size16압축 크기가 16바이트입니다.
Size2압축 크기가 2바이트입니다.
Size32압축 크기가 32바이트입니다.
Size4압축 크기가 4바이트입니다.
Size64압축 크기가 64바이트입니다.
Size8압축 크기가 8바이트입니다.
Unspecified압축 크기가 지정되지 않았습니다.

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

  1. 앞 필드의 오프셋에 앞 필드의 크기를 더해 오프셋의 최소값을 계산합니다.

  2. 필드의 원래 압축 크기를 계산합니다. 필드가 단순 데이터 형식이면 데이터 형식의 크기를 사용합니다. 필드가 배열이면 배열 요소의 크기를 사용합니다. 필드 자체가 구조체이면 구조체의 압축 크기를 해당 구조체에서 가장 큰 필드의 크기와 비교하여 더 작은 값을 사용합니다.

  3. 압축 크기를 단계 2에서 계산한 필드의 원래 압축 크기와 비교하여 유효 압축 크기를 계산하고 더 작은 값을 사용합니다.

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

참고참고:

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

예를 들어, bytelong을 포함하는 클래스에서 압축 크기 Size1을 사용할 경우 byte 필드의 오프셋은 0이고 long 필드의 오프셋은 1입니다. 압축 크기가 Size4이면 long 필드의 오프셋이 4입니다. 두 개의 short 필드를 포함하는 클래스에서 임의의 압축 크기를 사용할 경우 두 번째 short 필드의 오프셋은 2입니다.

참고참고:

압축 크기를 변경하면 해당 크기의 배가 아닌 오프셋을 기준으로 필드가 맞춰질 경우 성능이 저하될 수 있습니다.

Windows Phone OS

지원되는 버전: 8.0

표시: