您好,登錄后才能下訂單哦!
這篇文章主要介紹C語言中怎么使用泛型達到代碼重用的目的,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
通過泛型,你重新獲得了鏈接列表的代碼通用(對于所有類型只用實現一次),而當你初始化鏈表的時候你告訴鏈表所能接受的類型。這個實現是非常簡單的,讓我們重新回到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的地方,你現在都需要使用T。LinkedList 類現在接受一個T類型的Node,而不是一個簡單的Node作為頭結點。
public class LinkedList< T>{ Node< T> headNode = null;
再來一遍,轉換是很直白的。任何地方你需要使用Object的,現在改做T,任何需要使用Node的地方,現在改做 Node< T>。下面的代碼初始化了兩個鏈接表。一個是整型的。
LinkedList< int> ll = new LinkedList< int>();
另一個是Employee類型的:
LinkedList< Employee> employees = new LinkedList< Employee>();
剩下的代碼與***個版本沒有區別,除了沒有裝箱、拆箱,而且也不可能將錯誤的類型保存到集合中。
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);
泛型允許你不用復制/粘貼冗長的代碼就實現類型安全的集合。而且,因為,使用泛型運行時才被擴展成特殊類型。Just In Time編譯器可以在不同的實例之間共享代碼,***,它顯著地減少了你需要編寫的代碼。
這樣,使用泛型就達到了代碼重用的目的。
以上是“C語言中怎么使用泛型達到代碼重用的目的”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。