Heim > Backend-Entwicklung > C++ > Wie kann ich ohne Boolesche Operatoren oder Erweiterungsmethoden überprüfen, ob ein Typ ein Subtyp oder mit einem anderen Typ in C# identisch ist?

Wie kann ich ohne Boolesche Operatoren oder Erweiterungsmethoden überprüfen, ob ein Typ ein Subtyp oder mit einem anderen Typ in C# identisch ist?

Mary-Kate Olsen
Freigeben: 2025-01-09 15:11:46
Original
312 Leute haben es durchsucht

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

Wie kann man in C# feststellen, ob ein Typ ein Untertyp oder der gleiche Typ eines anderen Typs ist, ohne boolesche Operatoren oder Erweiterungsmethoden zu verwenden?

Die Methode

Type.IsSubclassOf in C# kann effektiv prüfen, ob ein Typ eine Unterklasse eines anderen Typs ist. Wenn die Typen jedoch genau gleich sind, wird false zurückgegeben. Dies kann zu Herausforderungen führen, wenn versucht wird, festzustellen, ob ein Typ eine Unterklasse ist oder mit der Basisklasse selbst identisch ist.

Mehrere Methoden und ihre Grenzen

Es gibt mehrere Methoden, aber jede Methode hat ihre Grenzen:

  1. Type.IsSubclassOf:

    • Funktioniert zum Überprüfen von Unterklassen, schlägt jedoch fehl, wenn die Typen gleich sind.
  2. Type.IsAssignableFrom:

    • kann die Frage beantworten, kann aber auch falsch positive Ergebnisse liefern, die darauf hinweisen, dass eine Vererbung oder Typidentität vorhanden ist, wenn tatsächlich keine vorhanden ist.
  3. „is“- und „as“-Operatoren:

    • Erfordert eine Objektreferenz und kann nicht direkt auf Typobjekte angewendet werden.

Fazit

Leider ist eine saubere Lösung ohne zusätzliche Prüfungen nicht möglich. Um die vollständige Antwort zu erhalten, ist der folgende Code erforderlich:

<code class="language-csharp">typeof(Derived).IsSubclassOf(typeof(Base)) || typeof(Derived) == typeof(Base);</code>
Nach dem Login kopieren

Oder, prägnanter als Methode geschrieben:

<code class="language-csharp">public bool IsSameOrSubclass(Type potentialBase, Type potentialDescendant)
{
    return potentialDescendant.IsSubclassOf(potentialBase) || potentialDescendant == potentialBase;
}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich ohne Boolesche Operatoren oder Erweiterungsmethoden überprüfen, ob ein Typ ein Subtyp oder mit einem anderen Typ in C# identisch ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage