Maison >développement back-end >C++ >Comment puis-je vérifier si un type est un sous-type ou identique à un autre type en C# sans opérateurs booléens ni méthodes d'extension ?
Comment savoir si un type est un sous-type ou le même type d'un autre type en C# sans utiliser d'opérateurs booléens ou de méthodes d'extension ?
La méthodeType.IsSubclassOf
en C# peut vérifier efficacement si un type est une sous-classe d'un autre type. Cependant, lorsque les types sont exactement les mêmes, il renvoie false
. Cela peut créer des défis lorsque l'on tente de déterminer si un type est une sous-classe ou identique à la classe de base elle-même.
Plusieurs méthodes et leurs limites
Plusieurs méthodes existent, mais chaque méthode a ses limites :
Type.IsSubclassOf :
Type.IsAssignableFrom :
Opérateurs « est » et « comme » :
Conclusion
Malheureusement, il n'existe aucun moyen de fournir une solution soignée sans vérifications supplémentaires. Pour obtenir la réponse complète, le code suivant est requis :
<code class="language-csharp">typeof(Derived).IsSubclassOf(typeof(Base)) || typeof(Derived) == typeof(Base);</code>
Ou, écrit de manière plus concise sous forme de méthode :
<code class="language-csharp">public bool IsSameOrSubclass(Type potentialBase, Type potentialDescendant) { return potentialDescendant.IsSubclassOf(potentialBase) || potentialDescendant == potentialBase; }</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!