IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Questions sur un code


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte logiciel

    Informations forums :
    Inscription : Novembre 2006
    Messages : 93
    Par défaut Questions sur un code
    Bonjour, je voudrais qu'on m'explique ce bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		private void messenger_ConversationCreated(object sender, ConversationCreatedEventArgs e)
    		{
    			if(e.Initiator == null)
    			{				
    				this.Invoke(new CreateConversationDelegate(CreateConversationForm), new object[] { e.Conversation});
    			}
    		}

    Ce code provient d'un événement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    messenger.ConversationCreated += new ConversationCreatedEventHandler(messenger_ConversationCreated);
    et je voudrais savoir :

    Que sont les 2 arguments (e et sender) car ceux-ci sont automatiquement ajoutés ?

    Avoir un éclaircissement sur la méthode Invoke, à quoi sert elle ? et que sont ces arguments ?

    Qu'est ce que cela : new object[] { e.Conversation} ?

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par hugobosscool26 Voir le message
    Que sont les 2 arguments (e et sender) car ceux-ci sont automatiquement ajoutés ?
    Ce sont les paramètres du delegate ConversationCreatedEventHandler

    Avoir un éclaircissement sur la méthode Invoke, à quoi sert elle ? et que sont ces arguments ?
    Elle sert à exécuté un delegate (ici, il s'agit de CreateConversationDelegate). Les arguments, ce sont ceux qui sont nécessaires à ce delegate

    Qu'est ce que cela : new object[] { e.Conversation} ?
    C'est simplement une déclaration + initialisation d'un tableau d'objet, que l'on remplit avec e.Conversation


    A+

  3. #3
    Membre confirmé
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte logiciel

    Informations forums :
    Inscription : Novembre 2006
    Messages : 93
    Par défaut
    D'accord, tout d'abord merci de ta réponse mais je n'ai pas tout saisi.


    Le delegate en question est celui-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private delegate ConversationForm CreateConversationDelegate(Conversation conversation);
    Mais à quoi sert un delegate (donc tout ce système) ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new object[] { e.Conversation}
    est donc un objet anonyme (si je ne me trompe pas). Mais que fait-il ici ? Il appartient à la méthode Invoke mais le delegate n'a qu'un paramètre de type conversation alors que là on dirait qu'on envoit un objet de type CreateConversationDelegate et cet object. Pourrais tu m'éclairer ?

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Citation Envoyé par hugobosscool26 Voir le message
    D'accord, tout d'abord merci de ta réponse mais je n'ai pas tout saisi.


    Le delegate en question est celui-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private delegate ConversationForm CreateConversationDelegate(Conversation conversation);
    Mais à quoi sert un delegate (donc tout ce système) ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new object[] { e.Conversation}
    est donc un objet anonyme (si je ne me trompe pas). Mais que fait-il ici ? Il appartient à la méthode Invoke mais le delegate n'a qu'un paramètre de type conversation alors que là on dirait qu'on envoit un objet de type CreateConversationDelegate et cet object. Pourrais tu m'éclairer ?
    Salut,

    un delegate, c'est juste un type pouvant pointer sur une ou des methodes dont la signature est celle du délégué en question. Ici par exemple, on a un type delegué CreateConversationForm qui pourra contenir des methodes dont la signature est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ConversationForm La_Methode(Conversation arg)
    Ici le délégué en question va servir à appeller, suite à la methode "messenger_ConversationCreated", la methode (ici une methode nommée CreateConversationForm apparement) referencée par le delegate (new CreateConversationDelegate(...) ), et ses arguments (ici e.Conversation qu'on passe sous la forme d'un tableau d'objet.

    Pour le pourquoi object[], c'est la syntaxe d'Invoke qui veut ca, on passe un délégué plus les arguments, et la methode sera appelé sur le thread du Control.

  5. #5
    Membre confirmé
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte logiciel

    Informations forums :
    Inscription : Novembre 2006
    Messages : 93
    Par défaut
    d'accordo merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Questions sur le code
    Par Pedro dans le forum Sepi
    Réponses: 5
    Dernier message: 23/12/2006, 13h10
  2. une question sur le code ASP-Nuke
    Par ghita269 dans le forum ASP
    Réponses: 1
    Dernier message: 14/01/2006, 09h41
  3. [Conception] Question sur un code permettant de connaître le nombre de connectés
    Par inferno66667 dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 19/12/2005, 19h49
  4. Question sur le code compactage de la FAQ
    Par Nicko29 dans le forum Access
    Réponses: 7
    Dernier message: 14/11/2005, 20h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo