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
Mary-Kate Olsenasal
2025-01-09 15:11:46356semak imbas

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>

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!

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