溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中怎么使用泛型達到代碼重用的目的

發(fā)布時間:2021-11-03 13:45:31 來源:億速云 閱讀:119 作者:小新 欄目:編程語言

這篇文章主要介紹C語言中怎么使用泛型達到代碼重用的目的,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

通過泛型,你重新獲得了鏈接列表的代碼通用(對于所有類型只用實現(xiàn)一次),而當你初始化鏈表的時候你告訴鏈表所能接受的類型。這個實現(xiàn)是非常簡單的,讓我們重新回到Node類:

public class Node{      Object data;      ...

注意到 data 的類型是Object,(在EmployeeNode中,它是Employee)。我們將把它變成一個泛型(通常,由一個大寫的T代表)。我們同樣定義Node類,表示它可以被泛型化,以接受一個T類型。

public class Node < T>{      T data;      ...

讀作:T類型的Node。T代表了當Node被初始化時,Node所接受的類型。T可以是Object,也可能是整型或者是Employee。這個在Node被初始化的時候才能確定。

注意:使用T作為標識只是一種約定俗成,你可以使用其他的字母組合來代替,比如這樣:

public class Node < UnknownType>{      UnknownType data;      ...

通過使用T作為未知類型,next字段(下一個結點的引用)必須被聲明為T類型的Node(意思是說接受一個T類型的泛型化Node)。

Node< T> next;

構造函數接受一個T類型的簡單參數:

public Node(T data)  {      this.data = data;      this.next = null;  }

Node 類的其余部分是很簡單的,所有你需要使用Object的地方,你現(xiàn)在都需要使用T。LinkedList 類現(xiàn)在接受一個T類型的Node,而不是一個簡單的Node作為頭結點。

public class LinkedList< T>{      Node< T> headNode = null;

再來一遍,轉換是很直白的。任何地方你需要使用Object的,現(xiàn)在改做T,任何需要使用Node的地方,現(xiàn)在改做 Node< T>。下面的代碼初始化了兩個鏈接表。一個是整型的。

LinkedList< int> ll = new LinkedList< int>();

另一個是Employee類型的:

LinkedList< Employee> employees = new LinkedList< Employee>();

剩下的代碼與***個版本沒有區(qū)別,除了沒有裝箱、拆箱,而且也不可能將錯誤的類型保存到集合中。

LinkedList< int> ll = new LinkedList< int>();  for ( int i = 0; i <  10; i ++ )  {      ll.Add(i);  }   Console.WriteLine(ll);  Console.WriteLine("  Done.");   LinkedList< Employee> employees = new LinkedList< Employee>();  employees.Add(new Employee("John"));  employees.Add(new Employee("Paul"));  employees.Add(new Employee("George"));  employees.Add(new Employee("Ringo"));   Console.WriteLine(employees);   Console.WriteLine("  Done.");  Console.WriteLine("The fourth integer is " + ll[3]);  Employee d = employees[1];  Console.WriteLine("The second Employee is " + d);

泛型允許你不用復制/粘貼冗長的代碼就實現(xiàn)類型安全的集合。而且,因為,使用泛型運行時才被擴展成特殊類型。Just In Time編譯器可以在不同的實例之間共享代碼,***,它顯著地減少了你需要編寫的代碼。

這樣,使用泛型就達到了代碼重用的目的。

以上是“C語言中怎么使用泛型達到代碼重用的目的”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI