Soalan:
Menentukan saiz mana-mana contoh objek (termasuk koleksi, gabungan dan objek individu) ialah tugas biasa apabila mengurus saiz objek.
Penyelesaian:
Walaupun tiada kaedah rasmi, anda boleh memanfaatkan refleksi dan dalaman .NET tanpa dokumen untuk menganggarkan saiz objek:
object obj = new List<int>(); RuntimeTypeHandle th = obj.GetType().TypeHandle; int size = *(*(int**) &th + 1); Console.WriteLine(size);
Penjelasan:
RuntimeTypeHandle
Menyediakan akses kepada perwakilan dalaman sesuatu jenis. Had:
StringBuilder
). Kaedah sambungan:
Untuk kemudahan, anda boleh mempertimbangkan untuk melaksanakan kaedah sambungan pada kelas Object
untuk memudahkan pengambilan saiz:
public static int GetEstimatedByteSize(this object obj) { RuntimeTypeHandle th = obj.GetType().TypeHandle; return *(*(int**) &th + 1); }
Sila ambil perhatian bahawa kaedah sambungan ini harus digunakan dengan berhati-hati dan tidak dijamin tepat untuk semua jenis dan senario.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Anggarkan Saiz Byte Objek C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!