Implement generic IComparable <T>.
using System;
using System.Collections.Generic;
// Implement the generic IComparable<T> interface.
class Product : IComparable<Product> {
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);
}
// Implement the IComparable<T> interface.
public int CompareTo(Product obj) {
return name.rupareTo(obj.name);
}
}
class MainClass {
public static void Main() {
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.
inv.Sort();
Console.WriteLine("Product list after sorting:");
foreach(Product i in inv) {
Console.WriteLine(" " + i);
}
}
}
Product list before sorting:
A Cost: $5.50 On hand: 3
B Cost: $8.90 On hand: 2
C Cost: $3.00 On hand: 4
D Cost: $1.80 On hand: 8
Product list after sorting:
A Cost: $5.50 On hand: 3
B Cost: $8.90 On hand: 2
C Cost: $3.00 On hand: 4
D Cost: $1.80 On hand: 8
Sort and search an array of objects
using System;
class MyClass : IComparable<MyClass> {
public int i;
public MyClass(int x) {
i = x;
}
// Implement IComparable<MyClass>.
public int CompareTo(MyClass v) {
return i - v.i;
}
}
class MainClass {
public static void Main() {
MyClass[] nums = new MyClass[5];
nums[0] = new MyClass(5);
nums[1] = new MyClass(2);
nums[2] = new MyClass(3);
nums[3] = new MyClass(4);
nums[4] = new MyClass(1);
Console.Write("Original order: ");
foreach(MyClass o in nums)
Console.Write(o.i + " ");
Console.WriteLine();
Array.Sort(nums);
Console.Write("Sorted order: ");
foreach(MyClass o in nums)
Console.Write(o.i + " ");
Console.WriteLine();
MyClass x = new MyClass(2);
int idx = Array.BinarySearch(nums, x);
Console.WriteLine("Index of MyClass(2) is " + idx);
}
}
Original order: 5 2 3 4 1
Sorted order: 1 2 3 4 5
Index of MyClass(2) is 1