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 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 ?

Mary-Kate Olsen
Libérer: 2025-01-09 15:11:46
original
354 Les gens l'ont consulté

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

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éthode

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

  1. Type.IsSubclassOf :

    • Fonctionne pour vérifier les sous-classes, mais échoue si les types sont les mêmes.
  2. Type.IsAssignableFrom :

    • peut répondre à la question, mais peut également donner des faux positifs indiquant qu'un héritage ou une identité de type existe alors qu'il n'en existe pas réellement.
  3. Opérateurs « est » et « comme » :

    • Nécessite une référence d'objet et ne peut pas opérer directement sur des objets de type.

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal