Bagaimana untuk mengetahui sama ada sesuatu jenis ialah subjenis atau jenis yang sama dengan jenis lain dalam C# tanpa menggunakan pengendali Boolean atau kaedah sambungan?
KaedahType.IsSubclassOf
dalam C# boleh menyemak dengan berkesan sama ada sesuatu jenis ialah subkelas jenis lain. Walau bagaimanapun, apabila jenisnya betul-betul sama, ia kembali false
. Ini boleh mencipta cabaran apabila cuba menentukan sama ada sesuatu jenis adalah subkelas atau sama dengan kelas asas itu sendiri.
Beberapa kaedah dan hadnya
Beberapa kaedah wujud, tetapi setiap kaedah mempunyai hadnya:
Jenis.IsSubclassOf:
Jenis.IsAssignableFrom:
"adalah" dan "sebagai" pengendali:
Kesimpulan
Malangnya, tiada cara untuk menyediakan penyelesaian yang kemas tanpa pemeriksaan tambahan. Untuk mendapatkan jawapan yang lengkap, kod berikut diperlukan:
<code class="language-csharp">typeof(Derived).IsSubclassOf(typeof(Base)) || typeof(Derived) == typeof(Base);</code>
Atau, ditulis dengan lebih ringkas sebagai kaedah:
<code class="language-csharp">public bool IsSameOrSubclass(Type potentialBase, Type potentialDescendant) { return potentialDescendant.IsSubclassOf(potentialBase) || potentialDescendant == potentialBase; }</code>
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Semak sama ada Jenis adalah Subjenis atau Sama dengan Jenis Lain dalam C# Tanpa Pengendali Boolean atau Kaedah Sambungan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!