using System; using System.Collections.Generic; using System.Text; namespace Developpez.Dotnet.Collections { /// /// Comparateur basé sur un delegate Comparison<T>. /// /// Le type des éléments à comparer public class ComparisonComparer : Comparer { private Comparison _comparison; /// /// Initialise une nouvelle instance ComparisonComparer<T>. /// /// La comparaison à utiliser public ComparisonComparer(Comparison comparison) { comparison.CheckArgumentNull("comparison"); _comparison = comparison; } /// /// Compare deux instances de T /// /// Premier élément à comparer /// Second élément à comparer /// -1 si x < y, 1 si x > y, 0 si x == y public override int Compare(T x, T y) { return _comparison(x, y); } /// /// Convertit le ComparisonComparer<T> spécifié en Comparison<T>. /// /// Le ComparisonComparer<T> à convertir /// La comparaison résultant de la conversion public static implicit operator Comparison(ComparisonComparer comparisonComparer) { return comparisonComparer._comparison; } /// /// Convertit la Comparison<T> spécifiée en ComparisonComparer<T>. /// /// La Comparison<T> à convertir /// Le ComparisonComparer<T> résultant de la conversion public static implicit operator ComparisonComparer(Comparison comparison) { return new ComparisonComparer(comparison); } } }