Csharp/C Sharp by API/System.Collections.Generic/IComparer

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

implements IComparer

<source lang="csharp">

using System; using System.Collections.Generic;

// Create an IComparer<T> for Product objects. class ProductComparer<T> : IComparer<T> where T : Product {

 // Implement the IComparer<T> interface. 
 public int Compare(T obj1, T obj2) { 
   return obj1.name.rupareTo(obj2.name); 
 } 

}

class Product {

 public string name; 
 double cost; 
 int onhand; 

 public Product(string n, double c, int h) { 
   name = n; 
   cost = c; 
   onhand = h; 
 } 

 public override string ToString() { 
   return 
     String.Format("{0,-10}Cost: {1,6:C}  On hand: {2}", 
                   name, cost, onhand); 
 } 

}

class MainClass {

 public static void Main() { 
   ProductComparer<Product> comp = new ProductComparer<Product>(); 
   List<Product> inv = new List<Product>(); 
    
   // Add elements to the list 
   inv.Add(new Product("A", 5.5, 3)); 
   inv.Add(new Product("B", 8.9, 2));    
   inv.Add(new Product("C", 3.0, 4)); 
   inv.Add(new Product("D", 1.8, 8)); 

   Console.WriteLine("Product list before sorting:"); 
   foreach(Product i in inv) { 
     Console.WriteLine("   " + i); 
   } 
   Console.WriteLine(); 

   // Sort the list using an IComparer. 
   inv.Sort(comp); 

   Console.WriteLine("Product list after sorting:"); 
   foreach(Product i in inv) { 
     Console.WriteLine("   " + i); 
   } 
 } 

}


 </source>