User u = new User();
Type t = typeof(User)
u is User -> returns true
u is t -> compilation error -
comment tester si une variable est de type de cette façon?
User u = new User();
Type t = typeof(User)
u is User -> returns true
u is t -> compilation error -
comment tester si une variable est de type de cette façon?
Les autres réponses contiennent tous des omissions importantes.
L' is
opérateur de ne pas vérifier si le moteur d'exécution type de l'opérande est exactement le type donné; au contraire, il vérifie pour voir si le moteur d'exécution type est compatible avec le type donné:
class Animal {}
class Tiger : Animal {}
...
object x = new Tiger();
bool b1 = x is Tiger; // true
bool b2 = x is Animal; // true also! Every tiger is an animal.
Mais la vérification de type identité , de réflexion, de vérifications de l'identité, pas de compatibilité
bool b3 = x.GetType() == typeof(Tiger); // true
bool b4 = x.GetType() == typeof(Animal); // false! even though x is an animal
Si ce n'est pas ce que vous voulez, alors vous voudrez probablement IsAssignableFrom:
bool b5 = typeof(Tiger).IsAssignableFrom(x.GetType()); // true
bool b6 = typeof(Animal).IsAssignableFrom(x.GetType()); // true! A variable of type Animal may be assigned a Tiger.
Vous avez besoin de voir si le Type de votre instance est égal au Type de la classe. Pour obtenir le type de l'instance que vous utilisez l' GetType()
méthode:
u.GetType().Equals(t);
ou
u.GetType.Equals(typeof(User));
vous devriez le faire. Évidemment, vous pourriez utiliser "= = " pour faire votre comparaison, si vous préférez.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.