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

封裝大小未指定。

備註

封裝大小會影響組織為 LayoutKind.Sequential 的結構和類別中的欄位對齊方式。 封裝大小是兩個因素之一,可決定結構或類別封送處理時欄位的位移;另一個因素是欄位的有效大小。 若要判斷欄位的位移:

  1. 藉由將上述欄位的大小新增至上一個欄位的位移,以計算位移的最小值。

  2. 計算欄位的自然封裝大小:如果欄位是簡單的資料類型,請使用大小。 如果欄位是陣列,請使用陣列元素的大小。 如果欄位本身是結構,請將該結構的封裝大小與該結構中最大的欄位大小進行比較,並使用兩個值中的較小值。

  3. 藉由比較封裝大小與欄位的自然封裝大小,以計算步驟 2 中計算的有效封裝大小。 使用兩個數字的較小。

  4. 計算位移。 位移是等於或大於最小值的第一個記憶體位置,以及步驟 3 中計算的有效封裝大小倍數。

注意

一旦計算類別或結構中所有欄位的位移之後,就會加入填補,讓整體大小是封裝大小的倍數。

例如,在包含 bytelong 的類別中,使用封裝大小 Size1 ,欄位的 byte 位移為零 (0) ,而欄位的 long 位移為一 (1) 。 如果封裝大小為 Size4long 則欄位會位移 4 (4) 。 在包含兩 short 個欄位的類別中,使用任何封裝大小時,第二 short 個欄位的位移為 2 (2) 。

注意

如果封裝大小造成欄位在大小不多的位移上對齊,變更封裝大小可能會影響效能。

適用於