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

Framework .NET Discussion :

instanciation d'un délégué deux fois


Sujet :

Framework .NET

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    958
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 958
    Points : 141
    Points
    141
    Par défaut instanciation d'un délégué deux fois
    Bonjour,

    Soit le délégué suivant et son initialisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public delegate bool isValidDelegate();
     
    public isValidDelegate isValid= null;
    Si j'ajoute une méthode nommée CheckStateValid à ce delegué ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    isValid += new isValidDelegate(CheckStateValid);
    et qu'ensuite , j'ajoute une nouvelle méthode vers lequel pointe l'instance isValid du délégué isValidDelegate ainsi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    isValid += CheckControl;
    Je lis que dans le deuxième cas où j'ajoute la méthode CheckControl , c'est comme ci implicitement j'avais écris l'instruction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    isValid += new isValidDelegate(CheckControl);
    Ce que je ne comprends pas, c'est l'usage de l'opérateur new une deuxième fois .

    Est ce que je dois créer une nouvelle instance du delegué isValidDelegate à chaque fois que je j'ajoute une nouvelle méthode vers lequel une de ses instances déjà créée doit pointer?

    A mon sens, non, puisque j'ai déjà crée l'instance isValid par l'instruction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    isValid += new isValidDelegate(CheckStateValid);
    Que permet de faire donc l'opérateur new , de créer une nouvelle instance de quoi, lorsque j'écris cette instruction?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    isValid += new isValidDelegate(CheckControl);
    Idem si j'écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    isValid -= new isValidDelegate(CheckStateValid);
    Pour supprimer la méthode CheckState Valid, pour qu'elle ne soit plus pointée par le délégué.

    Quel est l'utilité de l'usage de l'opérateur new.

    Merci beaucoup de votre réponse sur ces points,

    Cordialement.

    new_wave
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. [SHADOKS]

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par new_wave Voir le message
    Ce que je ne comprends pas, c'est l'usage de l'opérateur new une deuxième fois .
    Quand tu écris ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isValid += new isValidDelegate(CheckControl);
    c'est comme si tu écrivais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isValid = isValid + new isValidDelegate(CheckControl);
    Ce code fait donc "l'addition" de deux instances de isValidDelegate, et affecte le résultat (qui est une nouvelle instance de isValidDelegate) à la varialbe isValid. Pour additionner 2 instances, il faut déjà avoir ces 2 instances... la variable isValid en contient déjà une, et le new crée la deuxième. Il n'y a rien de très compliqué là-dedans...

    Citation Envoyé par new_wave Voir le message
    Est ce que je dois créer une nouvelle instance du delegué isValidDelegate à chaque fois que je j'ajoute une nouvelle méthode vers lequel une de ses instances déjà créée doit pointer?

    A mon sens, non, puisque j'ai déjà crée l'instance isValid par l'instruction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    isValid += new isValidDelegate(CheckStateValid);
    Tu as déjà créé une instance de isValidDelegate, mais comme indiqué plus haut, il en faut une 2e...

    Un délégué, c'est en fait une "liste" de couples cible/méthode. Quand tu crées un délégué avec new, ce délégué a une seule cible et une seule méthode. C'est en "additionnant" plusieurs instances de délégué que tu les "combines".

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    958
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 958
    Points : 141
    Points
    141
    Par défaut instanciation d'un delegué deux fois
    [Résolu]
    Merci beaucoup de ta réponse.

    Je pensais en effet que l'opérateur += n'avait rien à voir avec l'opérateur d'affectation que l'on peut utiliser dans des expressions, ce qui est faux.

    A présent tout est plus clair.

    Bien cordialement.

    new_wave
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. [SHADOKS]

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par new_wave Voir le message
    [Résolu]
    Salut,

    Pour marquer le sujet comme résolu, il y a un bouton en bas de la page

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

Discussions similaires

  1. surcharger deux fois le même opérateur
    Par Tex-Twil dans le forum C++
    Réponses: 2
    Dernier message: 01/12/2005, 19h45
  2. [SQL] Requete me renvoyant deux fois le meme nom
    Par Pepito dans le forum Langage SQL
    Réponses: 9
    Dernier message: 14/10/2005, 14h35
  3. Lire deux fois un inputstream
    Par Guybrush dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 05/09/2005, 14h50
  4. Réponses: 14
    Dernier message: 30/03/2005, 21h50
  5. Sélectionner un même enregistrement deux fois...
    Par Manu0086 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 02/02/2004, 13h09

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