La méthode GetType, retourne un objet de type System.Type incluant des méthodes permettant d'obtenir des informations sur les constructeurs, méthodes, les champs et les propriétés implémentés dans la classe.
L'opérateur typeof permet de récupérer l'objet System.Type de l'objet passé en paramètre. L'opérateur typeof ne fonctionne qu'avec des types connus au moment de la compilation.
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 2 juil. 2005 à 14:20
Apparemment c'est ce qu'ils font mais je ne les ai pas tous essayés non plus, abonne toi dans un prog de test et met du point d'arret ;-)
Pour le typeof/GetType dans ton cas le choix est vite fait : tu es dans un contexte static, donc pas de this.GetType()
Et la méthode Type.GetType() demandant le nom complet sous forme de chaine c'est un peu "lourd" face au typeof :-)
Sinon je pense plutot que le fait de mettre un typeof declenche l'utilisation d'une méthode de System.Type (GetTypeFromHandle ou qqch du genre) mais ne donne pas lieu à un remplacement "en dur" à la compilation.
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 2 juil. 2005 à 11:10
Salut Aogie, vi justement j'ai pensé que peut etre il fallait passer le type de la classe mais comme j'ai déja un code assez lent.. c'est couteux en performance un apple à typeof !?? Parce que j'ai pas encore bien compris la difference avec la methode GetType qui elle peut renvoyer un type à l'execution, ca voudrait dire que typeof travaille en static au niveau du compilateur !? comme sizeof en C si je me trompe pas !?
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 2 juil. 2005 à 12:28
Salut,
Le "sender" est spécifié par celui qui lève l'event, donc il n'y a pas vraiment de définition exacte.
Sauf si tu parles d'un event défini dans un type du framework lui même.
Donc pour résumer, si l'event défini en static est levé depuis une instance de la classe, "sender" peut très bien être l'instance.
Après si tu n'a pas besoin de specifier un "sender", ne le défini tout simplement pas dans ton delegate
Ex : public delegate void MonEventHandler(MonEventArgs args);
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 2 juil. 2005 à 12:45
Merci pour le lien.. Mais la définition de l'opérateur typeof je ne la trouve toujours pas très clair.. Je sais bien que cet opérateur fonctionne uniquement avec des types connus au moment de la compilation, c'est bien pour ca que dans mon message précédent je dit que la methode GetType travaille au moment de l'éxecution elle ! Mais que faut il comprendre ? L'opérateur typeof est donc un opérateur static qui n'engendre aucun code suplémentaire à l'éxecution et donc aucun coût en terme de performance ?
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 2 juil. 2005 à 12:50
Coq, ma classe est une classe static ( private ctor ) avec un event static.. et j'ai mis un sender pour faire comme Microsoft, je pensais qu'il fallait respecter ce modèle !?
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 2 juil. 2005 à 13:04
A bien y penser c'est probablement le cas en effet.
Dans ce cas passe null, si tu n'as pas besoin de connaitre le type. (comme c'est le cas sur les events de la classe SystemEvents par exemple)
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 2 juil. 2005 à 13:33
Si tu dis que les events de la classe SystemEvents passent null et bien je vais faire pareil ! Coq tu ne te prononces pas sur le cas de typeof !? ( J'attends la réponse de Aogie avant de valider les réponses )
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 2 juil. 2005 à 15:04
Oui dans ce cas précis j'ai pas le choix y'a pas d'instance de ma classe.. C'est le comportement en général que j'essaye de comprendre.. Et je pense comme toi, y'a peu de chance pour que typeof code "en dur" comme tu dis.. C'est trompeur avec l'opérateur sizeof qui en C peut renvoyer une constante à la compilation.. Bon bha si tu croises Anders Hejlsberg je compte sur toi pour lui demander : ))