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#] CompareTo sur des objets dont le type est connu en dynamique


Sujet :

C#

  1. #1
    Membre régulier Avatar de luimême
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Points : 121
    Points
    121
    Par défaut [C#] CompareTo sur des objets dont le type est connu en dynamique
    Je souhaiterais définir une fonction de comparaison pour ma classe d'objets.
    Mais je ne connais pas le type de mes objets à l'avance.
    Et la méthode CompareTo n'est pas défini sur les objets.

    exemple démonstratif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class UnObjet
    {
         public object[] proprietes ;
         public int CompareTo( UnObjet obj, int indicePropriete )
         {
            ( this.proprietes[indicePropriete] ).CompareTo( obj.proprietes[indicePropriete] )
         }
    }

    Merci de votre aide.

  2. #2
    Membre expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Points : 1 566
    Points
    1 566
    Par défaut
    Salut,

    Su quelle base tu vas comparer deux objets qui ne sont pas du même type ?

    C'est à dire on sait comparer deux voitures de marques differentes en comparant la puissance du moteur, Vitesse maximale .....

    Mais comparer un immeuble et une fourchette
    Mehdi Feki : Modérateur .Net

  3. #3
    Membre régulier Avatar de luimême
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Points : 121
    Points
    121
    Par défaut
    mais si la comparaison sera de même type.

    Je vais bien comparer deux objets qui auront le même type
    sauf que leur type ne sera connu qu'à l'exxécution.
    Il peut être de type int, char, date, ....



    Je peux avoir

    UnObjet 1 proprietes [ 1, "a", true, une date, ... ]

    UnObjet 2 proprietes [ 3, "b", false, une date, ... ]

    La comparaison se fait sur le même indice des propriétés et donc
    des comparaisons équivalentes.

  4. #4
    Membre expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Points : 1 566
    Points
    1 566
    Par défaut
    Ok maos ta méthode prend un UnObjet en parametre

    Dans ce cas c'est facil, UnObjet doit implementer IComparable et tu fais :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class UnObjet
    {
         public object[] proprietes ;
         public int CompareTo( UnObjet obj, int indicePropriete )
         {
    if( this.proprietes[indicePropriete] is UnObjet)
    return ((UnObjet)this.proprietes[indicePropriete]).CompareTo(obj);
    else return 0;
    }
     
    //tu implemente public int CompareTo(object obj) ici
    }

    Sinon si c'est object au lieu de UnObjet, dans ce cas tes classes doivent implémenter IComparable . Ensuite :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class UnObjet
    {
         public object[] proprietes ;
         public int CompareTo( object obj, int indicePropriete )
         {
    if( this.proprietes[indicePropriete] is Classe1)
    ((Classe1)this.proprietes[indicePropriete]).CompareTo(obj);
    else if( this.proprietes[indicePropriete] is Classe2)
    ((Classe2)this.proprietes[indicePropriete]).CompareTo(obj);
    //....
    }
    }

    C'est la premiere idée qui me vient à l'esprit, pour l'instant
    Mehdi Feki : Modérateur .Net

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 20/04/2011, 23h55
  2. Méthode JS qui crée des objets dont le nom est recu en paramètre
    Par power of mind dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/07/2009, 13h44
  3. itération sur des objets de types différents ?
    Par jc63 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 07/09/2007, 08h19
  4. vector de pointeurs sur des objet
    Par jean-bobby dans le forum SL & STL
    Réponses: 26
    Dernier message: 06/08/2004, 14h54
  5. Réponses: 6
    Dernier message: 30/06/2004, 08h16

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