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 :

[C#] Utiliser delegate pour rechercher dans une collection


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 205
    Points : 66
    Points
    66
    Par défaut [C#] Utiliser delegate pour rechercher dans une collection
    Bonjour,

    J'aimerai créer dans ma classe une fonction Find, de façon à l'utiliser de la même manière que Find de List<> prenant un delegate en paramètre. Je sais utiliser la fonction Find de List, mais je ne verrai pas comment faire si je voulais l'implémenter. Donc en bref, je veux une fonction de ce prototype:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public GraphicsBase Find( Predicate<GraphicsBase> match );
    Pour ce qui est de l'implémentation je vois pas du tout...Comment utiliser ce predicate

    Merci de m'aider
    Cordialement

  2. #2
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Bonjour,

    Ton delegate est en quelque sorte une fonction qui répond à une certaine signature, dans ton exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Predicate<GraphicsBase> match
    Cela veut dire que le délégué devra avoir une signature comme celle qui suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bool nomDeFonction(GraphicsBase obj)
    Pour illustrer prenons un exemple sans List<> :
    Donc voici une classe GraphicsBase:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class GraphicsBase
    {
       public string Prop1 {get;set;}
       public string Prop2 {get;set;}
       public string Prop3 {get;set;}
    }
    Maintenant une autre classe stockant plusieurs instances de GraphicsBase mais pas dans une List<> sinon c'est pas drôle :
    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
    class uneAutreClasse
    {
     GraphicsBase GB1 {get;set;}
     GraphicsBase GB2 {get;set;}
     GraphicsBase GB... {get;set;}
     GraphicsBase GBn {get;set;}
     
     public static Find( Predicate<GraphicsBase> match )
     {
        if(match(GB1))
          return GB1;
        if(match(GB2))
          return GB2;
        ...
        if(match(GBn))
          return GBn;
     
        return null;
     }
    }
    Et j'appelle le Find ailleurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uneInstanceDUneAutreClasse.Find(delegate (GraphicsBase x) { return x.Prop1 == "Toto";});
    Ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    uneInstanceDUneAutreClasse.Find(x => x.Prop1 == "Toto");
    Voilà ! C'est parlant ou pas ?

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 205
    Points : 66
    Points
    66
    Par défaut
    Merci beaucoup!

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

Discussions similaires

  1. generateur de code java pour rechercher dans une base de donnees
    Par cdubet dans le forum EDI et Outils pour Java
    Réponses: 5
    Dernier message: 18/02/2017, 11h10
  2. [1.x] Faire une recherche dans une collection..
    Par nims dans le forum Symfony
    Réponses: 6
    Dernier message: 17/03/2010, 10h15
  3. [DEBUTANT] - Pb pour ajout dans une collection
    Par bdaboah dans le forum VB.NET
    Réponses: 2
    Dernier message: 18/12/2009, 16h26
  4. Réponses: 2
    Dernier message: 19/05/2008, 22h48
  5. Réponses: 2
    Dernier message: 07/07/2006, 11h00

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