Static event

Résolu
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 2 juil. 2005 à 10:02
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 2 juil. 2005 à 15:55
Salut, c'est quoi le "sender" d'un event déclaré en static !? Je suppose que c'est "null" mais j'ai pas trouvé la confirmation dans la doc..

11 réponses

aogie Messages postés 108 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 27 novembre 2007
2 juil. 2005 à 12:00
http://www.labo-dotnet.com/desktopmodules/LaboDotnet.Articles/contentfiles/pdf/csharp.pdf

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.

-- AOGie --
3
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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.

Cocoricoooooooo !!!!
coq
MVP Visual C#
3
aogie Messages postés 108 Date d'inscription vendredi 11 juillet 2003 Statut Membre Dernière intervention 27 novembre 2007
2 juil. 2005 à 10:04
En général, si la classe s'appelle "MyClass", on a l'habitude d'y placer typeof(MyClass).

-- AOGie --
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
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 !?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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);

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
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 ?
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
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 !?
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
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 )
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
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 : ))
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
2 juil. 2005 à 15:55
lol
C'est pas demain la veille je crois ^^

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Rejoignez-nous