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 MethodeType.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:
Type.IsSubclassOf:
Type.IsAssignableFrom:
„is“- und „as“-Operatoren:
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>
Oder, prägnanter als Methode geschrieben:
<code class="language-csharp">public bool IsSameOrSubclass(Type potentialBase, Type potentialDescendant) { return potentialDescendant.IsSubclassOf(potentialBase) || potentialDescendant == potentialBase; }</code>
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!