PerNameProcessComparer test = new PerNameProcessComparer(listeProc);
bonne compilation mais erreur (impossible de comparer 2 éléments).
TriGen test = TriGen(listeProc);
Erreur avant même la compilation (Process est un type utilisé comme une variable.
Process[] processes = Process.GetProcesses(); TriGen processesTriGen = new TriGen(processes); // Tri par nom processesTriGen.Sort(new PerNameProcessComparer()); foreach (Process p in processesTriGen.Tableau) { Console.WriteLine("{0} (PID {1})", p.ProcessName, p.Id); }
Process[] processes = Process.GetProcesses(); TriGen processesTriGen = new TriGen(processes); // tri par PID processesTriGen.Sort(new PerPIDProcessComparer()); foreach (Process p in processesTriGen.Tableau) { Console.WriteLine("{0} (PID {1})", p.ProcessName, p.Id); }
TriGen<char> characters = new TriGen<char>(new char[] { 'd', 'a', 'c', 'b' }); // Tri par défaut characters.Sort(); foreach (char s in characters.Tableau) { Console.WriteLine(s); }
public class TriGen<T> { public T[] Tableau { get; set; } public IComparer<T> DefaultComparer { get { return Comparer<T>.Default; } } public TriGen(T[] liste) { Tableau = liste; // ... } // ... public void Sort() { this.Sort(this.DefaultComparer); } public void Sort(IComparer<T> comparer) { Array.Sort(Tableau, comparer); } } public class PerNameProcessComparer : Comparer { private StringComparer comparer = StringComparer.OrdinalIgnoreCase; public override Int32 Compare(Process x, Process y) { if (Object.ReferenceEquals(x, y)) return 0; if (x == null) return -1; if (y == null) return 1; return this.comparer.Compare(x.ProcessName, y.ProcessName); } } public class PerPIDProcessComparer : Comparer { public override Int32 Compare(Process x, Process y) { if (Object.ReferenceEquals(x, y)) return 0; if (x == null) return -1; if (y == null) return 1; return x.Id.CompareTo(y.Id); } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question