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

Windows Forms Discussion :

[C#] Tri d'objet et surcharge d'opérateur


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2003
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 191
    Points : 158
    Points
    158
    Par défaut [C#] Tri d'objet et surcharge d'opérateur
    Bonjour à tous,

    Voilà, juste une petite question... J'ai une ArrayList qui contient des Objets dont une des variables membres est une date...

    Y a-t-il un moyen de trier le contenu de l'ArrayList (via méthode Sort()) en lui disant que le critère de tri est le membre date des mes objets...

    J'ai tenter de surcharger les opérateurs < et > dans ma classe mais ca ne marche pas...

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Array.Sort a un overload auquel tu peux passer un objet implémentant l'interface IComparer.

    Donc tu te fais une classe implémentant IComparer, avec la méthode Compare qui va bien, prenant deux objets de ta classe à trier, et effectuant la comparaison sur les champs qui t'intéressent.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2003
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 191
    Points : 158
    Points
    158
    Par défaut
    Ok, un grand merci, je vais essayer cela...

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Dans le détail
    Citation Envoyé par Maniak Voir le message
    Array.Sort a un overload auquel tu peux passer un objet implémentant l'interface IComparer.

    Donc tu te fais une classe implémentant IComparer, avec la méthode Compare qui va bien, prenant deux objets de ta classe à trier, et effectuant la comparaison sur les champs qui t'intéressent.

    J'avoue que je me retrouve face au même problème, et après avoir passé une journée sur MSDN, je pense avoir un problème ... Mais lequel ?
    J'ai donc créé un ArrayList contenant des 'Img' et j'aimerais trier en utilisant la propriété 'PrintSize' de type string

    public class byPaperSize : IComparer
    {
    public int Compare(object objA, object objB)
    {
    if((objA is Img)&&(objB is Img))
    {
    Img imageA = (Img) objA;
    Img imageB = (Img) objB;
    return byPaperSize.Compare(imageA.PrintSize, imageB.PrintSize);
    }

    throw new ArgumentException("object is not an Image");
    }
    }

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Réponse
    Ok, je pense avoir trouvé

    public class byPaperSize : IComparer
    {
    public int Compare(object objA, object objB)
    {
    if((objA is Img)&&(objB is Img))
    {
    Img imageA = (Img) objA;
    Img imageB = (Img) objB;
    return string.Compare(imageA.PrintSize, imageB.PrintSize);
    }
    throw new ArgumentException("object is not an Image");
    }
    }

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Points : 780
    Points
    780
    Par défaut
    Pourquoi vous utilisez ce truc ignoble d'Array? (si vous etes en .net>=2.0), utilisez plutot une List<Image> : plus la peine de vérifier et d'effectuer le cast dans le Comparer...

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Points : 627
    Points
    627
    Par défaut
    Citation Envoyé par Chubyone Voir le message
    Pourquoi vous utilisez ce truc ignoble d'Array? (si vous etes en .net>=2.0), utilisez plutot une List<Image> : plus la peine de vérifier et d'effectuer le cast dans le Comparer...
    QFT.

    C'est tellement bien les List<>, si tu peux les utiliser, n'hesite meme pas.

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

Discussions similaires

  1. [C#] Est-il possible de surcharger l'opérateur = ?
    Par backseatgreg dans le forum C#
    Réponses: 11
    Dernier message: 28/11/2005, 16h18
  2. Petit probléme de surcharge d'opérateur .
    Par Clad3 dans le forum C++
    Réponses: 20
    Dernier message: 11/04/2005, 20h15
  3. Problème de surcharge d'opérateurs
    Par Hell dans le forum C++
    Réponses: 17
    Dernier message: 17/01/2005, 16h01
  4. Cumul de surcharges d'opérateurs
    Par Nats dans le forum C++
    Réponses: 2
    Dernier message: 11/10/2004, 13h37
  5. [VB .NET] Surcharge d'opérateur
    Par Franckintosh dans le forum VB.NET
    Réponses: 2
    Dernier message: 07/09/2004, 19h05

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