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 :

Les delegués eclaircissement


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut Les delegués eclaircissement
    Bonjour,

    J'ai du mal à bien comprendre quand utiliser les delegués (comme pointeur).
    J'ai lu bcp de chose mais j'ai du mal a comprendre pourquoi il serait mieux d'utiliser par exemple un delegué pour trier un tableau que d'appeler simplement la methode de tri.

    Merci pour vos conseils.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 206
    Par défaut
    Salut,
    Voici un cas d'utilisation des délégués.

    - Un formulaire contenant un tableau.
    - Un thread exécutant une méthode de lecture de données

    Pour mettre à jour le tableau après chaque lecture des données depuis mon thread, j'utilise un delegate car sinon il n'est pas possible d'accéder au tableau.

    Voila.

  3. #3
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    L'utilisation avec un thread et les evenement .net y a pas de soucis.

    Mais dans bcp de code je constate l'appel a un delegué pour par exemple faire un trie. Pourquoi dans ce cas la pourquoi ne pas appeler simplemement la methode de trie. Et y a t il d'autre cas pour l'utilité de faire des pointeurs ?

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Les délégués sont utiles dans certains patrons de conception (design-patterns):
    Le Callback: http://fr.wikipedia.org/wiki/Fonction_de_rappel
    Le Strategy: http://fr.wikipedia.org/wiki/Strat%C..._de_conception)

  5. #5
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Citation Envoyé par topolino Voir le message
    Mais dans bcp de code je constate l'appel a un delegué pour par exemple faire un trie.
    Pour trier une collection d'objets, il faut :
    - que ces objets soient triables
    - avoir un algo de tri.
    Le tri nécessite une fonction de comparaison, qui prend deux objets a et b, et dit si a < b, a = b, ou a > b. Il y a aussi d'autres contraintes (par exemple, il faut que a < b et b < c implique que a < c.)
    Une telle fonction doit renvoiyer 0 si a = b, un nombre négatif si a <b, un nombre positif si a > b.

    Pour ce qui est des algos de tri, il y en a plein : tri bulle, quick sort, tri par insertion, ... Ce qu'ils ont en commun, c'est qu'ils fonctionnent en comparant des objets deux à deux.

    Ce que le framework propose, par exemple avec List<T>.Sort, c'est un algo de tri. Ensuite, c'est à la charge du développeur de fournir une méthode de comparaison.

    Donc disons que t'as un objet Personne, avec des propriété Nom, Prenom, Age, que tu veux trier par Age. ta méthode de comparaison sera alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public int CompareAge(Personne p1, Personne p2)
    {
      if (p1.Age == p2.Age) return 0;
      if (p1.Age < p2.Age) return -1;
      return 1;
    }
    Ensuite, tu peux trier la liste ainsi :
    Sort est une méthode de tri. On ne sait pas comment elle fonctionne (QuickSort ? Bubble ? autre ?), et on s'en fiche : tout ce qu'on doit faire, c'est lui expliquer comment comparer deux objets ; et ça, ça se fait en lui donnant une méthode de comparaison, via un delegate.

    C'est plus clair ?

  6. #6
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    Pourquoi ne pas utiliser directement ta methode CompareAge au lieu de la passer entant que delegué a la methode sort ?

  7. #7
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par topolino Voir le message
    Pourquoi ne pas utiliser directement ta methode CompareAge au lieu de la passer entant que delegué a la methode sort ?
    Si tu regardes la signature, la méthode CompareAge elle n'est utilisable que pour comparer deux éléments, pas pour trier une liste. Lorsque tu appelles Sort, il trie en fonction de comment tu lui dis de comparer les élements.

Discussions similaires

  1. eclaircissement sur les threads
    Par marocleverness dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 12/07/2009, 10h48
  2. Eclaircissements sur les perceptrons multicouches
    Par tnarol dans le forum Méthodes prédictives
    Réponses: 3
    Dernier message: 02/08/2008, 19h34
  3. Eclaircissements sur les barres d'outils perso
    Par La Zélie dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/06/2008, 21h24
  4. besoins d'eclaircissements sur les dossiers cron.*
    Par rhaamo dans le forum Administration système
    Réponses: 5
    Dernier message: 23/02/2007, 11h38
  5. Eclaircissement sur les clé dans un DWH(fact table)
    Par Melvine dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 12/05/2006, 17h46

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