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#] Comment implementer la classe IComparable ?


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#] Comment implementer la classe IComparable ?
    Bonjour,

    Je souhaiterais que ma classe implemente la classe IComparable
    pour pouvoir trier les objets instances de ma classe.

    Pour cela, j'implemente la fonction CompareTo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public int CompareTo(object obj)
    { .... }
    Le problème est que je dois ajouter un paramètre à cette fonction pour
    pouvoir comparer deux objets.

    du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public int CompareTo( object obj, int indiceComparateur )
    Alors, comment faire :

    Merci d'avance...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    487
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 487
    Points : 621
    Points
    621
    Par défaut
    Si on rajoute un paramètre, ce n'est plus l'interface IComparable...

    Tout dépend de l'utilisation.
    Si la comparaison est réalisée par un objet du framework qui réclame impérativement IComparable, ça parait difficile.
    Sinon, IComparable n'a rien d'obligatoire et on peut utiliser une méthode différente.



    Il est aussi possible de rajouter le paramètre de de comparaison comme membre static de la classe. Il s'applique ainsi à tous les objets et IComparable suffit.

    Tout dépend du contexte.
    On ne peut pas faire boire un âne qui n'a pas soif.

  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
    c'est possible et j'ai trouvé :

    comme ceci :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    public class ElementComparer : IComparer
    {
    	private int indiceDeComparaison ;
     
    	public int Compare( object lhs, object rhs )
    	{
    		if(obj is Temperature && )
    		{
    			return lhs.CompareTo( rhs, IndiceDeComparaison ) ;
    		}
    		throw new ArgumentException("object is not an Element");
    	}
    	public int IndiceDeComparaison
    	{
    		get{ return indiceDeComparaison ; }
    		set{ indiceDeComparaison = value ; }
    	}
    }
     
    public class Element ; IComparable
    {
    	public static ElementComparer GetComparer( )
    	{
    		return new Element.ElementComparer( );
    	}
     
    	// comparaison par defaut
    	public int CompareTo( Element element )
    	{
    		return this.mon.CompareTo( element.Reference ) ;
    	}
     
    	public int CompareTo( Element element, int indexCritereDeComparaison ) 
    	{
    	  ... la comparaison souhaitee
    	}
    }

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

Discussions similaires

  1. comment compiler une classe sous linux qui implemente une interface
    Par nina08 dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 19/11/2008, 08h43
  2. Réponses: 3
    Dernier message: 25/04/2007, 09h47
  3. Réponses: 8
    Dernier message: 22/03/2006, 18h24
  4. Réponses: 14
    Dernier message: 02/02/2006, 18h32
  5. [Plugin] Comment instantier certaines classes de ANT ?
    Par relivio dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 01/04/2004, 15h45

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