PackingSize Enum
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
- 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:
Komputasi nilai minimum untuk offset dengan menambahkan ukuran bidang sebelumnya ke offset bidang sebelumnya.
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.
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.
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 Size1
kemasan , 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.