Accueil > > > UTILISATION DE ICOMPARER
UTILISATION DE ICOMPARER
Information sur la source
Description
S'agissant d'une question revenant péridiquement, voici un petit exemple d'implémentation de l'interface IComparer, nécessaire pour effectuer le tri d'un type personnalisé dans un Array ou ArrayList par exemple. Pour l'exemple nous allons nous baser sur une classe "Personne", et notre implémentation de IComparer permettra d'effectuer un tri croissant/décroissant sur chacun des éléments caractérisant la personne : Nom, Prenom et Age. Soit 6 possiblités de tri au total. Version minimale du Framework : 1.1 // // REPRESENTATION DE LA CLASSE PERSONNE // public class Personne { // Methodes public Personne(string nom, string prenom, int age); public override string ToString(); // Propriétés public int Age { get; } public string Nom { get; } public string Prenom { get; } } Etant donné l'éclatement en petites méthodes de la classe PersonneComparer, le mieux est de télécharger la solution afin de regarder directement le déroulement dans l'IDE.
Source
- // La méthode principale de PersonneComparer, la seule définie par IComparer et par laquelle tout arrive :-)
- // Etant donné l'éclatement en petites méthodes,
- // le mieux est de télécharger la solution afin de regarder directement le déroulement dans l'IDE.
- public int Compare(object x, object y)
- {
- // vérification des types des paramètres
- if ( !(x is Personne) || !(y is Personne) )
- {
- return 0;
- }
-
- // transtypage des instances de Personne
- Personne persX = (Personne)x;
- Personne persY = (Personne)y;
-
- int ret = 0;
-
- // lancement des tri par mode
- switch (this._mode)
- {
- case PersonneComparerSortMode.Nom:
- // tri par nom
- ret = this.DoCompareByNom(persX, persY);
- break;
-
- case PersonneComparerSortMode.Prenom:
- // tri par prénom
- ret = this.DoCompareByPrenom(persX, persY);
- break;
-
- case PersonneComparerSortMode.Age:
- // tri par age
- ret = this.DoCompareByAge(persX, persY);
- break;
-
- default:
- // par défaut on considère les instances comme étant équivalentes.
- ret = 0;
- break;
- }
-
- return ret;
- }
// La méthode principale de PersonneComparer, la seule définie par IComparer et par laquelle tout arrive :-)
// Etant donné l'éclatement en petites méthodes,
// le mieux est de télécharger la solution afin de regarder directement le déroulement dans l'IDE.
public int Compare(object x, object y)
{
// vérification des types des paramètres
if ( !(x is Personne) || !(y is Personne) )
{
return 0;
}
// transtypage des instances de Personne
Personne persX = (Personne)x;
Personne persY = (Personne)y;
int ret = 0;
// lancement des tri par mode
switch (this._mode)
{
case PersonneComparerSortMode.Nom:
// tri par nom
ret = this.DoCompareByNom(persX, persY);
break;
case PersonneComparerSortMode.Prenom:
// tri par prénom
ret = this.DoCompareByPrenom(persX, persY);
break;
case PersonneComparerSortMode.Age:
// tri par age
ret = this.DoCompareByAge(persX, persY);
break;
default:
// par défaut on considère les instances comme étant équivalentes.
ret = 0;
break;
}
return ret;
}
Conclusion
Interface IComparer : http://msdn.microsoft.com/fr-fr/library/system.col lections.icomparer.aspx
Historique
- 21 novembre 2005 12:17:51 :
- Ajout des mot clés
- 04 mai 2008 17:43:38 :
- Changement liens vers MSDN suite au shutdown complet de l'ancienne version (et des redirections).
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
C# et les ArrayList (et un peu de bd aussi...) [ par Kati83 ]
Bonjour,En fait, j'aurais besoin d'un petit conseil.Je veux écrire une fonction qui se connecte à ma bd, et grâce à uine procédure stockée, récupère l
Tri d'une ListView à l'aide des en-têtes [ par JuS ]
Bonjour,J'ai une ListView, avec une en-tête, contenant 3 colonnes.Je souhaiterai trier ma ListView suivant la colonne correspondant à l'en-tête qui se
ListView:la tite flèche de tri, elle est où??? [ par Fildomen ]
SalutComment faire pour affichier la flèche de tri dans les colonnes d'un listview, comme dans windows explorer??? je l'ai pas trouvé.MerciY
Tri dans un listView [ par t_barbillon ]
Salut, Comment faire pour que le tri dans une listView (Sorting) dépendent de la colonne cliquée ? En gros si l'utilisateur clique sur la colonne 1, l
Acceder a un meme ArrayList depuis deux fonctions [ par akelton ]
Bonjour,Je continue ma decouverte de C# et je bloque sur la possibilité d'accéder a un meme ArrayList depuis deux fonctions différentes
ArrayList et structure [ par ChamY ]
Bonjour,J ai un petit probleme avec les arraylist.Je stocke des structures dans mon arraylist.Je recupere cette liste dans une autre classe. Je
Sacré ListView [ par elfourbos ]
Bonjour a tous ceux qui liront ce post, et merci d'avance..Voila cela fait plusieurs jours que je m'arrache les cheveux a propros d'un probleme due au
Soucis de (dé)sérialisation [ par Captain_Bomber ]
Bonjour à tous,Je cherche à partager une liste de noms entre 2 applications client-serveur. La liste évolue et doit donc être retransmise plusieurs fo
IComparer sur plusieurs colonnes [ par romagny13 ]
Salut,ba la question est simple savez vous comment trier sur plusieurs colonnes avec IComparer (et encore mieux IComparer de liste générique)dans l'id
Tri d'une liste contenant un tableau [ par cybers7119 ]
Salut,Je travaille en ce moment sur une liste contenant un tableau de string ( List<string[]> ).Or, je souhaiterais trier cette liste en fonctio
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|