Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menguji Jenis Generik Objek dengan Tepat dalam C#?

Bagaimanakah Saya Boleh Menguji Jenis Generik Objek dengan Tepat dalam C#?

Mary-Kate Olsen
Lepaskan: 2025-01-06 15:50:43
asal
178 orang telah melayarinya

How Can I Accurately Test the Generic Type of an Object in C#?

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<>);
}
Salin selepas log masuk

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;
Salin selepas log masuk

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<>);
Salin selepas log masuk

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), ia tidak akan sepadan dengan definisi jenis generik (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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan