日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C# 泛型類概念與實例的理解應用淺析

C# 泛型類封裝不是特定于具體數(shù)據(jù)類型的操作。泛型類最常用于集合,如鏈接列表、哈希表、堆棧、隊列、樹等,其中,像從集合中添加和移除項這樣的操作都以大體上相同的方式執(zhí)行,與所存儲數(shù)據(jù)的類型無關。對于大多數(shù)需要集合類的方案,推薦的方法是使用 .NET Framework 2.0 類庫中所提供的類。一般情況下,創(chuàng)建泛型類的過程為:從一個現(xiàn)有的具體類開始,逐一將每個類型更改為類型參數(shù),直至達到通用化和可用性的***平衡。創(chuàng)建您自己的泛型類時,需要特別注意以下事項:

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站建設、成都網(wǎng)站設計與策劃設計,鐵嶺網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設十余年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:鐵嶺等地區(qū)。鐵嶺做網(wǎng)站價格咨詢:18982081108

將哪些類型通用化為類型參數(shù)。一般規(guī)則是,能夠參數(shù)化的類型越多,代碼就會變得越靈活,重用性就越好。但是,太多的通用化會使其他開發(fā)人員難以閱讀或理解代碼。如果存在約束,應對類型參數(shù)應用什么約束。一個有用的規(guī)則是,應用盡可能最多的約束,但仍使您能夠處理需要處理的類型。例如,如果您知道您的泛型類僅用于引用類型,則應用類約束。這可以防止您的類被意外地用于值類型,并允許您對 T 使用 as 運算符以及檢查空值。 是否將泛型行為分解為基類和子類。由于泛型類可以作為基類使用,此處適用的設計注意事項與非泛型類相同。有關從泛型基類繼承的規(guī)則,請參見下面的內(nèi)容。是否實現(xiàn)一個或多個泛型接口。

例如,如果您設計一個類,該類將用于創(chuàng)建基于泛型的集合中的項,則可能需要實現(xiàn)一個接口,如 IComparable,其中 T 是您的類的類型。

類型參數(shù)和約束的規(guī)則對于泛型類行為有幾方面的含義,特別是關于繼承和成員可訪問性。請務必先理解一些術語,然后再繼續(xù)進行。對于泛型類 Node,,客戶端代碼可以通過指定類型參數(shù)引用該類,以創(chuàng)建封閉式構(gòu)造類型 (Node),或者可以讓類型參數(shù)處于未指定狀態(tài)(例如在指定泛型基類時)以創(chuàng)建開放式構(gòu)造類型 (Node)。泛型類可以從具體的、封閉式構(gòu)造或開放式構(gòu)造基類繼承:

C# 泛型類代碼

 
 
 
  1. class BaseNode { }  
  2. class BaseNodeGeneric { }  
  3.  
  4. // concrete type  
  5. class NodeConcrete : BaseNode { }  
  6.  
  7. //closed constructed type  
  8. class NodeClosed : BaseNodeGeneric { }  
  9.  
  10. //open constructed type   
  11. class NodeOpen : BaseNodeGeneric { } 

非泛型(具體)類可以從封閉式構(gòu)造基類繼承,但無法從開放式構(gòu)造類或裸類型參數(shù)繼承,因為在運行時客戶端代碼無法提供實例化基類所需的類型變量。

C# 泛型類代碼

 
 
 
  1. //No error  
  2. class Node1 : BaseNodeGeneric { }  
  3.  
  4. //Generates an error  
  5. //class Node2 : BaseNodeGeneric {}  
  6.  
  7. //Generates an error  
  8. //class Node3 : T {} 

從開放式構(gòu)造類型繼承的泛型類必須為任何未被繼承類共享的基類類型參數(shù)提供類型變量,如以下代碼所示:

C# 泛型類代碼

 
 
 
  1. class BaseNodeMultiple { }  
  2.  
  3. //No error  
  4. class Node4 : BaseNodeMultiple { }  
  5.  
  6. //No error  
  7. class Node5 : BaseNodeMultiple { }  
  8.  
  9. //Generates an error  
  10. //class Node6 : BaseNodeMultiple {}  

從開放式構(gòu)造類型繼承的泛型類必須指定約束,這些約束是基類型約束的超集或暗示基類型約束:

C# 泛型類代碼

 
 
 
  1. class NodeItem where T : System.IComparable, new() { }  
  2. class SpecialNodeItem :   
  3. NodeItem where T : System.IComparable, new() { } 

泛型類型可以使用多個類型參數(shù)和約束,如下所示:

C# 泛型類代碼

 
 
 
  1. class SuperKeyType  
  2.     where U : System.IComparable  
  3.     where V : new()  
  4. { } 

開放式構(gòu)造類型和封閉式構(gòu)造類型可以用作方法參數(shù):

C# 泛型類代碼

 
 
 
  1. void Swap(List list1, List list2)  
  2. {  
  3.     //code to swap items  
  4. }  
  5.  
  6. void Swap(List list1, List list2)  
  7. {  
  8.     //code to swap items  

泛型類是不變的。也就是說,如果輸入?yún)?shù)指定 List,則當您試圖提供 List 時,將會發(fā)生編譯時錯誤。

C# 泛型類的相關內(nèi)容就向你介紹到這里,希望對你了解和學習C# 泛型類有所幫助。

【編輯推薦】

  1. C# 泛型應用及優(yōu)點淺析
  2. 淺析C# 泛型約束中的一般約束
  3. C# 泛型約束之派生約束淺析
  4. 淺析C# 泛型約束中的構(gòu)造函數(shù)約束
  5. C# 強制類型轉(zhuǎn)換與C# 泛型淺析

分享題目:C# 泛型類概念與實例的理解應用淺析
標題來源:http://m.5511xx.com/article/cdidhge.html