Bonjour,
La méthode GetType() permettant de connaître le type d'un objet ne peut se faire que sur une instance de l'objet mais quand l'objet est null ça ne fonctionne pas... Comment puis-je faire ?
Merci
Bonjour,
La méthode GetType() permettant de connaître le type d'un objet ne peut se faire que sur une instance de l'objet mais quand l'objet est null ça ne fonctionne pas... Comment puis-je faire ?
Merci
Bonjour,
la valeur null indique qu'il n'y a aucun contenu dans la variable.
Donc il y a aucun type.
Merci Math71 pour ta réponse mais il doit bien y avoir un type car si je code ceci
monType est bien typé, du coup je me demandait s'il était possible de le récupérer...
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part MonType monType = null;
Merci Pol63,
Ecrit comme je l'ai fait oui c'est sûr que je n'ai pas de question à me poser mais c'était une simplification de code, voici un code plus proche de ma situation :
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 interface IMonInterface { public MaPropriete { get; set; } } class MonObjet : IMonInterface { public MaPropriete { get; set; } public MaProprieteSpecific { get; set; } } class MonAutreObjet : IMonInterface { public MaPropriete { get; set; } public MonAutreProprieteSpecific { get; set; } } void Main() { MonObjet monObjet = null; MaFonction(monObjet); } void MaFonction(IMonInterface unObjet) { // Et là, comment faire pour savoir si c'est MonObjet ou MonAutreObjet ? }
Merci d'avance![]()
Il faut bien comprendre qu'il y a 2 types :
- le type de la variable, associé à la variable que l'on manipule : il est fixe et est déterminé à la compilation
- le type de l'instance, associé à l'instance d'objet manipulé : il est dynamique et dépend de l'instance. Le type de l'instance est obligatoirement un type compatible avec le type de la variable. Soit identique, soit une classe enfant (dans le cas de l'héritage), soit une implémentation (dans le cas où le type de la variable est une interface).
La méthode GetType() permet de récupérer le type d'instance. Ce qui n'est disponible qu'à la condition d'avoir une instance. Donc quand on a un null, on n'a pas d'instance, il n'y a pas de type. L'instruction typeof permet de déterminer le type de la variable et retourne toujours une valeur, car il est évalué à la compilation.
Maintenant, dans ton cas, avoir une méthode comme ça :
reflète généralement un défaut de conception. Un des intérêts de l'héritage et du polymorphisme, c'est de pouvoir s'abstraire du type réel d'un objet. Si tu as vraiment besoin de revenir au type de l'instance, il est impératif d'avoir une instance. Avec un null, tu ne pourras rien faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 void MaFonction(IMonInterface unObjet) { // Et là, comment faire pour savoir si c'est MonObjet ou MonAutreObjet ? }
Eventuellement tu peux utiliser des surcharges différentes, mais la surcharge utilisera le type de la variable, pas le type de l'instance.
Partager