Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Memeriksa Warisan Jenis (Termasuk Kelas Asas Sendiri) dalam C#?

Bagaimanakah Saya Boleh Memeriksa Warisan Jenis (Termasuk Kelas Asas Sendiri) dalam C#?

Linda Hamilton
Lepaskan: 2025-01-09 15:01:43
asal
617 orang telah melayarinya

How Can I Reliably Check for Type Inheritance (Including the Base Class Itself) in 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:

public static bool IsSameOrSubclass(Type potentialBase, Type potentialDescendant)
{
    return potentialDescendant.IsSubclassOf(potentialBase) || potentialDescendant == potentialBase;
}
Salin selepas log masuk

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!

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