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
Mary-Kate Olsenasal
2025-01-06 15:50:43211semak imbas

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<>);
}

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), 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!

Kenyataan:
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