Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Memeriksa Warisan Jenis (Termasuk Kelas Asas Sendiri) dalam C#?
Semakan Warisan Jenis C# yang Boleh Dipercayai: Termasuk Kelas Asas
Mengesahkan warisan jenis dalam C#, termasuk sama ada sesuatu jenis ialah kelas asas itu sendiri, memerlukan pertimbangan yang teliti. Kaedah typeof(SubClass).IsSubclassOf(typeof(BaseClass))
standard berfungsi dengan baik untuk subkelas tetapi gagal apabila membandingkan jenis dengan kelas asasnya sendiri (mengembalikan false
).
Menangani Had Kaedah Sedia Ada
Beberapa pendekatan wujud, setiap satu dengan batasan:
Type.IsSubclassOf
: Hanya mengenal pasti subkelas, bukan kelas asas itu sendiri.Type.IsAssignableFrom
: Termasuk kelas asas, tetapi boleh mengembalikan true
untuk jenis yang tidak berkaitan dengan penukaran tersirat atau eksplisit.is
dan as
pengendali: Beroperasi pada objek, bukan Type
objek secara langsung.Penyelesaian Teguh: Kaedah IsSameOrSubclass
Untuk mengatasi batasan ini, kaedah tersuai menyediakan penyelesaian yang boleh dipercayai:
<code class="language-csharp">public static bool IsSameOrSubclass(Type potentialBase, Type potentialDescendant) { return potentialDescendant.IsSubclassOf(potentialBase) || potentialDescendant == potentialBase; }</code>
Kaedah ini menentukan dengan tepat sama ada potentialDescendant
sama ada subkelas, atau sama dengan, potentialBase
. Ia menggabungkan pemeriksaan IsSubclassOf
dengan perbandingan kesaksamaan langsung, memastikan pengesahan warisan yang komprehensif dan tepat.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memeriksa Warisan Jenis (Termasuk Kelas Asas Sendiri) dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!