運行結果:
Adding:2 1 2 6 1 5 9 0 5
RetrIEving collections…
Integers:0,1,1,1,2,2,5,5,6,9
Employees:George, John, Paul, Ringo
本例的開頭聲明了一個可以放到鏈表中的類:
public class Employee : IComparable<Employee>
這個聲明指出Employee對象是可以進行對比的,可以看到Employee類實現了CompareTo和Equals方法。注意:這些方法是類型安全的(從參數傳遞進去的類是Employee類型)。LinkedList本身聲明為只操作實現了IComparable接口的類型:
public class LinkedList<T> where T : IComparable<T>
這樣就可以保證對列表進行排序。LinkedList操作Node類型的對象。Node也實現了IComparable接口,並要求它本身所操作的數據也實現了IComparable接口:
public class Node<T> : IComparable<Node<T>> where T : IComparable<T>
這些約束使得Node實現CompareTo方法變得安全而簡單,因為Node知道它將和其它Node的數據進行對比:
public int CompareTo(Node<T> rhs)
{
// 這樣使用是因為約束
return data.CompareTo(rhs.data);
}
注意,我們不需要測試rhs從而得知它是否實現了IComparable接口;我們已經約束了Node只能操作實現了IComparable接口的數據。