Maison > développement back-end > C++ > Comment puis-je tester avec précision le type générique d'un objet en C# ?

Comment puis-je tester avec précision le type générique d'un objet en C# ?

Mary-Kate Olsen
Libérer: 2025-01-06 15:50:43
original
171 Les gens l'ont consulté

How Can I Accurately Test the Generic Type of an Object in C#?

Test du type générique d'un objet en C#

En C#, il est essentiel de vérifier le type générique d'un objet pour s'assurer du bon manipulation et compatibilité dans votre code. Une approche courante consiste à utiliser la méthode GetType() pour récupérer le type d'un objet et le comparer à une définition de type générique connue. Cependant, cette approche peut entraîner des erreurs lors de la tentative de détermination du type générique.

Le problème d'équivalence de type

Le code fourni :

public bool Test()
{
    List<int> list = new List<int>();
    return list.GetType() == typeof(List<>);
}
Copier après la connexion

peut sembler logique, mais il retournera toujours false car l'opérateur == compare l'équivalence de type. Le type générique List<> représente une liste générique qui peut stocker n'importe quel type, pas seulement des entiers. Par conséquent, le type de list sera plus spécifique que List<>, ce qui entraînera une comparaison d'inégalités.

Solutions pour tester les types génériques

Pour tester avec précision si un objet est d'un type générique, utilisez ce qui suit approches :

Vérifier une instance générique :

Pour déterminer si un objet est une instance d'un type générique, utilisez la propriété IsGenericType :

return list.GetType().IsGenericType;
Copier après la connexion

Cela retournera vrai si list est une instance de n'importe quel générique class.

Vérifier le type générique spécifique :

Pour vérifier si un objet est une liste générique spécifique (List<>), utilisez la méthode GetGenericTypeDefinition() :

return list.GetType().GetGenericTypeDefinition() == typeof(List<>);
Copier après la connexion

Cela permettra renvoie true si list est une instance de List<> mais pas de types dérivés.

N'oubliez pas que ces vérifications établissent une équivalence de type exacte. Si un objet est une instance d'un type générique dérivé (par exemple, List), il ne correspondra pas à la définition du type générique (List<>).

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