Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Semak sama ada Jenis adalah Subjenis atau Sama dengan Jenis Lain dalam C# Tanpa Pengendali Boolean atau Kaedah Sambungan?

Bagaimanakah Saya Boleh Semak sama ada Jenis adalah Subjenis atau Sama dengan Jenis Lain dalam C# Tanpa Pengendali Boolean atau Kaedah Sambungan?

Mary-Kate Olsen
Lepaskan: 2025-01-09 15:11:46
asal
312 orang telah melayarinya

How Can I Check if a Type is a Subtype or Identical to Another Type in C# Without Boolean Operators or Extension Methods?

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?

Kaedah

Type.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:

  1. Jenis.IsSubclassOf:

    • Berfungsi untuk menyemak subkelas, tetapi gagal jika jenisnya sama.
  2. Jenis.IsAssignableFrom:

    • boleh menjawab soalan, tetapi juga boleh memberikan positif palsu yang menunjukkan warisan atau identiti jenis wujud apabila tiada yang benar-benar wujud.
  3. "adalah" dan "sebagai" pengendali:

    • Memerlukan rujukan objek dan tidak boleh beroperasi secara langsung pada objek jenis.

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

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

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!

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