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) 。 如果封裝大小為 Size4,則 long 字段會位移四 (4) 。 在包含兩 short 個字段的類別中,使用任何封裝大小,第二 short 個字段的位移是兩個 (2) 。

注意

如果變更封裝大小會導致欄位在大小不是倍數的位移上對齊,則變更封裝大小可能會影響效能。

適用於