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 :

[débutant] Compréhension de code II


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut [débutant] Compréhension de code II
    Voila dans mon apprentissage du C# je suis tombé sur la notion de delegate et ma recheche m'amene a ceci

    http://msdn2.microsoft.com/fr-fr/lib...,printer).aspx
    Code : 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
    28
    using System;
    // Declare delegate -- defines required signature:
    delegate void SampleDelegate(string message);
     
    class MainClass
    {
        // Regular method that matches signature:
        static void SampleDelegateMethod(string message)
        {
            Console.WriteLine(message);
        }
     
        static void Main()
        {
            // Instantiate delegate with named method:
            SampleDelegate d1 = SampleDelegateMethod;
            // Instantiate delegate with anonymous method:
            SampleDelegate d2 = delegate(string message)
            { 
                Console.WriteLine(message); 
            };
     
            // Invoke delegate d1:
            d1("Hello");
            // Invoke delegate d2:
            d2(" World");
        }
    }
    VOila je ne comprend pas trop l'utilisation de Delegate, quelqu'un aurait la gentillesse de m'expliqué l'utilité de delegate dans ce cas ci?

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 58
    Par défaut
    La notion de délégué est un peu abstraite, le cas le plus simple à comprendre est l'utilisation comme méthode anonyme comme dans le cas de d2.
    Ici d2, est définit sans que tu es besoin d'écrire une méthode externe. Attention, à ne pas abuser de cette notation, c'est plus rapide à écrire mais rend moins lisible le code. On l'utilise souvent pour des méthodes très simples.

    Ensuite, il y a une utilisation de type signature. Tu connais la signature de la méthode à exécuter par contre, tu ne sais pas comment elle sera implémentée. C'est un peu le cas pour gérer les évènements (mm si ce n'est pas tout a fait la mm chose). Tu sais que lorsque tu clickes sur un bouton, tu vas appeler une méthode avec une signature (object sender, EventArgs e), par contre, microsoft ne sait pas comment tu implémenteras le click du bouton. De ce fait, dans ton code tu définis une méthode qui implémentes le click du bouton. C'est le cas de d1 dans ton exemple.

    En espérant avoir été clair.

  3. #3
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    Clair oui tu l'as été mais je ne vois pas l'utilité, je ne vois pas d'exemple qui Nécessiterait l'emploie d'un delegate.

    Quelqu'un aurait un exemple ? (pas besoin d'un code) de pourquoi il utilise un delegate?

    Merci d'avance

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    La définition officielle d'un delegate est un objet qui contient une référence vers une méthode.

    On utilise des delegates pour l'invocation de méthodes et pour ajouter des handlers sur des événements (entre autres).
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre éclairé Avatar de isarian
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 268
    Par défaut
    Donc si je comprends bien, dans le programme on sait qu'on a une méthode X sans savoir exactement ce qu'elle fait ou autre, donc on utilise le delegate qui appelera la méthode.

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par isarian Voir le message
    Donc si je comprends bien, dans le programme on sait qu'on a une méthode X sans savoir exactement ce qu'elle fait ou autre, donc on utilise le delegate qui appelera la méthode.
    C'est un peu l'idée effectivement.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/02/2014, 11h29
  2. Débutant: compréhension code et conversion en VB
    Par Casey_ dans le forum Langage
    Réponses: 4
    Dernier message: 02/02/2011, 09h18
  3. [Débutant] Compréhension de code
    Par sebatlante dans le forum x86 16-bits
    Réponses: 10
    Dernier message: 18/01/2009, 17h10
  4. [débutant] Compréhension de code
    Par isarian dans le forum C#
    Réponses: 8
    Dernier message: 05/03/2008, 11h30
  5. Réponses: 4
    Dernier message: 06/11/2003, 10h37

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