Bagikan melalui


PackingSize Enum

Definisi

Menentukan salah satu dari dua faktor yang menentukan perataan memori bidang saat jenis di-marshalasi.

Enumerasi ini mendukung kombinasi bitwise dari nilai yang termasuk di dalamnya.

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
Warisan
PackingSize
Atribut

Bidang

Size1 1

Ukuran kemasannya adalah 1 byte.

Size128 128

Ukuran kemasannya adalah 128 byte.

Size16 16

Ukuran kemasannya adalah 16 byte.

Size2 2

Ukuran kemasannya adalah 2 byte.

Size32 32

Ukuran kemasannya adalah 32 byte.

Size4 4

Ukuran kemasannya adalah 4 byte.

Size64 64

Ukuran kemasannya adalah 64 byte.

Size8 8

Ukuran kemasannya adalah 8 byte.

Unspecified 0

Ukuran pengemasan tidak ditentukan.

Keterangan

Ukuran pengemasan memengaruhi penyelarasan bidang dalam struktur dan kelas yang organisasinya .LayoutKind.Sequential Ukuran kemasan adalah salah satu dari dua faktor yang menentukan offset bidang ketika struktur atau kelas di-marshal; faktor lain adalah ukuran bidang yang efektif. Untuk menentukan offset bidang:

  1. Komputasi nilai minimum untuk offset dengan menambahkan ukuran bidang sebelumnya ke offset bidang sebelumnya.

  2. Menghitung ukuran pengemasan alami untuk bidang: Jika bidang adalah jenis data sederhana, gunakan ukurannya. Jika bidang adalah array, gunakan ukuran elemen array. Jika bidang itu sendiri adalah struktur, bandingkan ukuran pengemasan struktur tersebut dengan ukuran bidang terbesar dalam struktur tersebut, dan gunakan yang lebih kecil dari dua nilai.

  3. Komputasi ukuran pengemasan yang efektif dengan membandingkan ukuran kemasan dengan ukuran kemasan alami bidang, yang dihitung pada langkah 2. Gunakan yang lebih kecil dari dua angka.

  4. Komputasi offset. Offset adalah lokasi memori pertama yang sama dengan atau lebih besar dari minimum, dan kelipatan ukuran kemasan efektif yang dihitung pada langkah 3.

Catatan

Setelah offset dihitung untuk semua bidang di kelas atau struktur, padding ditambahkan sehingga ukuran keseluruhan adalah kelipatan ukuran kemasan.

Misalnya, di kelas yang berisi byte dan long, menggunakan ukuran Size1kemasan , offset byte bidang adalah nol (0) dan offset long bidang adalah satu (1). Jika ukuran pengemasan adalah Size4, long bidang memiliki offset empat (4). Dalam kelas yang berisi dua short bidang, menggunakan ukuran pengemasan apa pun, offset bidang kedua short adalah dua (2).

Catatan

Mengubah ukuran pengemasan dapat memengaruhi performa jika menyebabkan bidang diselaraskan pada offset yang bukan kelipatan ukurannya.

Berlaku untuk