Menguji Jenis Generik Objek dalam C#
Dalam C#, adalah penting untuk mengesahkan jenis generik objek untuk memastikan betul pengendalian dan keserasian dalam kod anda. Satu pendekatan biasa ialah menggunakan kaedah GetType() untuk mendapatkan semula jenis objek dan membandingkannya dengan definisi jenis generik yang diketahui. Walau bagaimanapun, pendekatan ini boleh membawa kepada ralat semasa cuba menentukan jenis generik.
Isu dengan Kesetaraan Jenis
Kod yang disediakan:
public bool Test() { List<int> list = new List<int>(); return list.GetType() == typeof(List<>); }
mungkin kelihatan logik, tetapi ia akan sentiasa mengembalikan palsu kerana pengendali == membandingkan kesetaraan jenis. Jenis generik Senarai<> mewakili senarai generik yang boleh menyimpan sebarang jenis, bukan hanya integer. Oleh itu, jenis senarai akan lebih khusus daripada Senarai<>, menghasilkan perbandingan ketidaksamaan.
Penyelesaian untuk Menguji Jenis Generik
Untuk menguji dengan tepat sama ada objek daripada jenis generik, gunakan perkara berikut pendekatan:
Semak untuk Contoh Generik:
Untuk menentukan sama ada objek ialah tika daripada sebarang jenis generik, gunakan sifat IsGenericType:
return list.GetType().IsGenericType;
Ini akan kembali benar jika senarai ialah contoh mana-mana kelas generik.
Semak Jenis Generik Khusus:
Untuk mengesahkan sama ada objek ialah senarai generik tertentu (Senarai<>), gunakan GetGenericTypeDefinition() kaedah:
return list.GetType().GetGenericTypeDefinition() == typeof(List<>);
Ini akan kembali benar jika senarai ialah contoh Senarai<> tetapi bukan sebarang jenis terbitan.
Ingat bahawa semakan ini mewujudkan kesetaraan jenis yang tepat. Jika objek ialah tika jenis generik terbitan (cth., Senarai
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menguji Jenis Generik Objek dengan Tepat dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!