程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 泛型--約束(2)

泛型--約束(2)

編輯:關於C語言

運行結果:

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接口的數據。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved