精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

C# 類型參數約束分析及應用淺析

開發 后端
C# 類型參數約束使用的原因是什么呢?C# 類型參數約束的種類及應用是如何的呢?那么本文就向你詳細介紹這方面的內容。

C# 類型參數約束使用的原因:如果要檢查泛型列表中的某個項以確定它是否有效,或者將它與其他某個項進行比較,則編譯器必須在一定程度上保證它需要調用的運算符或方法將受到客戶端代碼可能指定的任何類型參數的支持。這種保證是通過對泛型類定義應用一個或多個約束獲得的。例如,基類約束告訴編譯器:僅此類型的對象或從此類型派生的對象才可用作類型參數。一旦編譯器有了這個保證,它就能夠允許在泛型類中調用該類型的方法。約束是使用上下文關鍵字 where 應用的。下面的代碼示例演示可通過應用基類約束添加到 GenericList 類的功能。

在定義泛型類時,可以對客戶端代碼能夠在實例化類時用于類型參數的類型種類施加限制。如果客戶端代碼嘗試使用某個約束所不允許的類型來實例化類,則會產生編譯時錯誤。這些限制稱為約束。約束是使用 where 上下文關鍵字指定的。下面列出了六種類型的約束:

◆T:結構

類型參數必須是值類型。可以指定除 Nullable 以外的任何值類型。

◆T:類

類型參數必須是引用類型,包括任何類、接口、委托或數組類型。

◆T:new()

類型參數必須具有無參數的公共構造函數。當與其他約束一起使用時,new() 約束必須***指定。

◆T:<基類名>

類型參數必須是指定的基類或派生自指定的基類。

◆T:<接口名稱>

類型參數必須是指定的接口或實現指定的接口。可以指定多個接口約束。約束接口也可以是泛型的。

◆T:U

為 T 提供的類型參數必須是為 U 提供的參數或派生自為 U 提供的參數。這稱為裸類型約束。

C# 類型參數約束代碼

  1. public class Employee  
  2. {  
  3.     private string name;  
  4.     private int id;  
  5.  
  6.     public Employee(string s, int i)  
  7.     {  
  8.         name = s;  
  9.         id = i;  
  10.     }  
  11.  
  12.     public string Name  
  13.     {  
  14.         get { return name; }  
  15.         set { name = value; }  
  16.     }  
  17.  
  18.     public int ID  
  19.     {  
  20.         get { return id; }  
  21.         set { id = value; }  
  22.     }  
  23. }  
  24.  
  25. public class GenericList where T : Employee  
  26. {  
  27.     private class Node  
  28.     {  
  29.         private Node next;  
  30.         private T data;  
  31.  
  32.         public Node(T t)  
  33.         {  
  34.             next = null;  
  35.             data = t;  
  36.         }  
  37.  
  38.         public Node Next  
  39.         {  
  40.             get { return next; }  
  41.             set { next = value; }  
  42.         }  
  43.  
  44.         public T Data  
  45.         {  
  46.             get { return data; }  
  47.             set { data = value; }  
  48.         }  
  49.     }  
  50.  
  51.     private Node head;  
  52.  
  53.     public GenericList() //constructor  
  54.     {  
  55.         head = null;  
  56.     }  
  57.  
  58.     public void AddHead(T t)  
  59.     {  
  60.         Node n = new Node(t);  
  61.         n.Next = head;  
  62.         head = n;  
  63.     }  
  64.  
  65.     public IEnumerator GetEnumerator()  
  66.     {  
  67.         Node current = head;  
  68.  
  69.         while (current != null)  
  70.         {  
  71.             yield return current.Data;  
  72.             current = current.Next;  
  73.         }  
  74.     }  
  75.  
  76.     public T FindFirstOccurrence(string s)  
  77.     {  
  78.         Node current = head;  
  79.         T t = null;  
  80.  
  81.         while (current != null)  
  82.         {  
  83.             //The constraint enables access to the Name property.  
  84.             if (current.Data.Name == s)  
  85.             {  
  86.                 t = current.Data;  
  87.                 break;  
  88.             }  
  89.             else 
  90.             {  
  91.                 current = current.Next;  
  92.             }  
  93.         }  
  94.         return t;  
  95.     }  

約束使得泛型類能夠使用 Employee.Name 屬性,因為類型為 T 的所有項都保證是 Employee 對象或從 Employee 繼承的對象。

可以對同一類型參數應用多個約束,并且約束自身可以是泛型類型,如下所示:

C# 類型參數約束代碼

  1. class EmployeeList where T : Employee, IEmployee, System.IComparablenew()  
  2. {  
  3.     // ...  

通過約束類型參數,可以增加約束類型及其繼承層次結構中的所有類型所支持的允許操作和方法調用的數量。因此,在設計泛型類或方法時,如果要對泛型成員執行除簡單賦值之外的任何操作或調用 System.Object 不支持的任何方法,您將需要對該類型參數應用約束。

在應用 where T : class 約束時,建議不要對類型參數使用 == 和 != 運算符,因為這些運算符僅測試引用同一性而不測試值相等性。即使在用作參數的類型中重載這些運算符也是如此。下面的代碼說明了這一點;即使 String 類重載 == 運算符,輸出也為 false。

C# 類型參數約束代碼

  1. public static void OpTest(T s, T t) where T : class 
  2. {  
  3.     System.Console.WriteLine(s == t);  
  4. }  
  5. static void Main()  
  6. {  
  7.     string s1 = "foo";  
  8.     System.Text.StringBuilder sb = new System.Text.StringBuilder("foo");  
  9.     string s2 = sb.ToString();  
  10.     OpTest<string>(s1, s2);  

這種情況的原因在于,編譯器在編譯時僅知道 T 是引用類型,因此必須使用對所有引用類型都有效的默認運算符。如果需要測試值相等性,建議的方法是同時應用 where T : IComparable 約束,并在將用于構造泛型類的任何類中實現該接口。

C# 未綁定的類型參數

沒有約束的類型參數(如公共類 SampleClass{} 中的 T)稱為未綁定的類型參數。未綁定的類型參數具有以下規則:

不能使用 != 和 == 運算符,因為無法保證具體類型參數能支持這些運算符。

可以在它們與 System.Object 之間來回轉換,或將它們顯式轉換為任何接口類型。

可以將它們與 null 進行比較。將未綁定的參數與 null 進行比較時,如果類型參數為值類型,則該比較將始終返回 false。

C# 裸類型約束

用作約束的泛型類型參數稱為裸類型約束。當具有自己的類型參數的成員函數需要將該參數約束為包含類型的類型參數時,裸類型約束很有用,如下面的示例所示:

C# 類型參數約束代碼

  1. class List  
  2. {  
  3.     void Add(List items) where U : T {/*...*/}  

在上面的示例中,T 在 Add 方法的上下文中是一個裸類型約束,而在 List 類的上下文中是一個未綁定的類型參數。

裸類型約束還可以在泛型類定義中使用。注意,還必須已經和其他任何類型參數一起在尖括號中聲明了裸類型約束:

C# 類型參數約束代碼

  1. //naked type constraint  
  2. public class SampleClass where T : V { } 

泛型類的裸類型約束的作用非常有限,因為編譯器除了假設某個裸類型約束派生自 System.Object 以外,不會做其他任何假設。在希望強制兩個類型參數之間的繼承關系的情況下,可對泛型類使用裸類型約束。

C# 類型參數約束的相關內容就向你介紹到這里,希望對你了解和學習C# 類型參數約束有所幫助。

【編輯推薦】

  1. 淺析C# 泛型約束中的構造函數約束
  2. C# 強制類型轉換與C# 泛型淺析
  3. C# 泛型類概念與實例的理解應用淺析
  4. C# 泛型的優點淺談
  5. C# 泛型類型參數淺析
責任編輯:仲衡 來源: MSDN
相關推薦

2009-08-18 10:35:46

C#枚舉類型

2009-08-24 14:51:25

C# 泛型泛型類型

2009-08-24 13:31:38

C# 泛型約束

2009-08-18 09:51:18

C#枚舉類型

2009-08-24 11:35:20

C# 泛型應用

2009-08-27 13:05:06

C#接口特點C#接口實例

2009-08-31 16:37:20

C#接口定義

2009-08-17 13:26:20

C#調用Windows

2009-07-31 16:25:29

C#回調函數API應用

2009-08-19 17:38:17

C# 操作符分類

2009-08-12 18:28:49

C#強制類型轉化

2009-08-18 10:30:30

C#枚舉

2009-08-24 13:41:23

C# 泛型約束

2009-08-06 10:14:15

C#引用類型數組

2009-08-18 12:52:33

C#枚舉類型

2009-09-07 04:19:56

C#窗體事件

2009-08-07 08:53:52

C# ICloneab

2009-08-27 14:12:02

C# interfac

2009-08-17 17:49:20

C# 枚舉

2009-08-24 12:58:15

C# 泛型約束
點贊
收藏

51CTO技術棧公眾號

这里只有精品国产| 精品无码人妻一区二区免费蜜桃| www中文字幕在线观看| 91一区一区三区| 国产日韩精品在线播放| 免费一级全黄少妇性色生活片| 欧美国产不卡| 91精品免费在线观看| 日韩精品视频一区二区在线观看| 日本中文字幕在线视频| 成人综合在线观看| 成人自拍性视频| 欧美成人一区二区三区四区| 欧美激情综合| 色婷婷av一区二区三区在线观看| 在线精品一区二区三区| 欧美成人一级| 欧美日韩激情一区二区| 日韩在线综合网| 婷婷色在线播放| 国产精品二三区| 欧美一区二区三区精美影视| 欧美一级在线免费观看 | 免费无码av片在线观看| 中文字幕在线观看网站| 中文字幕av不卡| 久久久一本精品99久久精品66| 国产黄色片网站| 麻豆91在线播放| 国产精品草莓在线免费观看| 国内免费精品视频| 亚洲第一精品影视| 欧美日韩国产va另类| 99re6热在线精品视频| 激情综合网五月| 亚洲毛茸茸少妇高潮呻吟| 日本美女视频网站| 91精品久久久久久综合五月天| 欧美军同video69gay| 一本色道久久亚洲综合精品蜜桃 | 欧美黄色aaaa| 久久久国产视频| 国产一二三四区在线| 国产麻豆精品久久| 亚洲性线免费观看视频成熟| 草草影院第一页| 亚洲区小说区图片区qvod按摩| 亚洲第一免费网站| 香港三日本8a三级少妇三级99| 亚洲啊v在线免费视频| 欧美成人vr18sexvr| 中文字幕在线观看视频www| 欧美h版在线观看| 精品日韩在线一区| 亚洲一区二区三区四区av| 亚洲精品影片| 亚洲第五色综合网| 性久久久久久久久久久| 天堂一区二区三区四区| 国产视频精品自拍| 日本爱爱爱视频| 日韩电影在线视频| 欧美伦理91i| 国产无遮挡又黄又爽又色| 亚洲日韩成人| 日韩美女在线播放| 亚洲一区二区人妻| 国产一区二区三区av电影| 51国偷自产一区二区三区| 亚洲福利在线观看视频| 99久久免费视频.com| 欧美亚洲国产免费| 永久免费av在线| 一区二区三区精品视频| 日韩免费视频播放| 福利视频亚洲| 精品少妇一区二区三区视频免付费| 亚洲 欧美 日韩在线| 国产精品午夜一区二区三区| 精品国产一区av| 国产精选第一页| 玖玖玖国产精品| 91亚洲国产成人精品性色| 亚洲精品久久久久avwww潮水| 97精品电影院| 色乱码一区二区三区熟女 | 黑丝美女久久久| 污污的网站18| 北条麻妃在线一区二区免费播放| 亚洲欧美一区二区三区情侣bbw | 精品国产91久久久| 久久久久久久久久久久91| 91精品国产自产精品男人的天堂 | 在线观看男女av免费网址| 欧美日韩色婷婷| 国产欧美精品一二三| 日韩美女精品| 久久高清视频免费| 无码人妻丰满熟妇精品| 成人一区二区三区视频在线观看| 色综合影院在线观看| 国产桃色电影在线播放| 欧美日韩激情在线| 国产传媒第一页| 欧美+亚洲+精品+三区| 国产99久久精品一区二区永久免费 | 另类的小说在线视频另类成人小视频在线| 国产高清自拍99| 女女色综合影院| 色天使色偷偷av一区二区| 男人添女人荫蒂国产| 久久精品国产大片免费观看| 69久久夜色精品国产69乱青草| 国产美女三级无套内谢| 亚洲国产精品t66y| 激情综合在线观看| 亚洲国产欧美国产第一区| 国产亚洲精品va在线观看| 中文字幕日韩一级| 国产大陆精品国产| 亚洲国产日韩综合一区| 人人鲁人人莫人人爱精品| 亚洲国产精品va| 久久激情免费视频| 国产尤物一区二区| 曰韩不卡视频| а√天堂资源国产精品| 亚洲精品之草原avav久久| 精品无码久久久久| 成人一二三区视频| av片在线免费| 亚洲一区二区三区在线免费| 欧美成人午夜激情| 国产熟女一区二区三区五月婷 | 中文字幕乱码一区二区三区 | 亚洲在线视频观看| 国产在线看片| 欧美一三区三区四区免费在线看 | 精品一区二区视频在线观看| 欧美日韩福利| 国产精品久久久久久久天堂第1集| av网址在线看| 日韩一区二区三区免费观看| 免费高清在线观看电视| 国精产品一区一区三区mba视频| 先锋影音一区二区三区| 丁香婷婷久久| 理论片在线不卡免费观看| 国产三级午夜理伦三级| 亚洲精品视频自拍| 粗大的内捧猛烈进出视频| 激情另类综合| 国产一区免费在线观看| 五月天国产在线| 亚洲一级黄色av| 亚洲无码久久久久久久| 亚洲男人的天堂一区二区| 国产精品二区视频| 亚洲黄色在线| 日本视频一区二区在线观看| 欧美激情三区| 欧美放荡办公室videos4k| 色婷婷综合视频| 色老综合老女人久久久| 992在线观看| 成人一区二区三区中文字幕| 久久久久久久久久久视频| 波多野结衣在线观看一区二区| 国产美女高潮久久白浆| 色网在线观看| 日韩精品视频在线播放| 午夜视频网站在线观看| 亚洲欧美日韩国产另类专区| 成人欧美精品一区二区| 欧美专区18| 免费成人深夜夜行网站视频| 99re91这里只有精品| 国产成人高潮免费观看精品| 米奇777四色精品人人爽| 亚洲成年人在线| 中文字幕一区二区三区免费看 | 99re免费视频精品全部| 小泽玛利亚视频在线观看| 国产精品va| 日本一区二区精品视频| 视频一区日韩精品| 国产成人avxxxxx在线看| av免费在线观| 亚洲色图美腿丝袜| 丰满人妻av一区二区三区| 欧美在线观看你懂的| 欧美被狂躁喷白浆精品| 国产农村妇女毛片精品久久麻豆| 少妇性l交大片7724com| 久久亚洲色图| 国产女主播自拍| 久久精品国产68国产精品亚洲| 精品九九九九| 欧美日韩午夜电影网| 国产精品99久久久久久人| 色呦呦在线资源| 北条麻妃99精品青青久久| 亚洲色图另类小说| 日韩免费看网站| 91久久精品国产91性色69| 狠狠色狠狠色综合日日五| 朝桐光av在线| 国产精品萝li| 性高潮久久久久久久| 福利视频网站一区二区三区| 日韩av在线中文| 日韩在线一区二区| 欧美成人xxxxx| 亚洲国产一区二区三区a毛片 | 精品国产一区二区三区四区vr | 亚洲欧美国产制服动漫| 日韩一级片免费在线观看| 日韩一区二区视频在线观看| 中文字幕在线观看第二页| 色婷婷狠狠综合| 久久国产视频播放| 天天影视色香欲综合网老头| 久久久精品国产sm调教网站| 亚洲欧美激情小说另类| 国产中文av在线| 国产精品久久二区二区| 国产精品国产三级国产专业不| 99精品热视频| 超碰男人的天堂| jiyouzz国产精品久久| 五月天丁香社区| 岛国精品在线播放| 国产又黄又嫩又滑又白| 国产成人精品免费| 不卡的一区二区| 国产精品一区一区| 国产大学生av| 高清成人在线观看| 日本性生活一级片| 不卡一区二区中文字幕| 美女又爽又黄免费| 99国产精品久久久| 国产美女免费无遮挡| 久久午夜色播影院免费高清| 中国美女乱淫免费看视频| 91免费在线看| 亚洲成人黄色av| 国产精品美女一区二区在线观看| 中文字幕伦理片| 日韩码欧中文字| 欧美片一区二区| 亚洲国产一区二区在线播放| 日韩av免费网址| 日韩欧美在线免费| 国产一级精品毛片| 91精品国产综合久久精品app| 国产精品一级二级| 精品国产人成亚洲区| 五月天激情婷婷| 中文字幕亚洲综合久久| 99久久精品免费观看国产| 午夜精品久久久久久久99热| av日韩电影| 91九色综合久久| 国产一区二区三区亚洲| 日本一区二区久久精品| 天天综合网网欲色| 男人日女人逼逼| 日韩av一二三| 少妇伦子伦精品无吗| 91捆绑美女网站| www.xx日本| 天天综合网天天综合色| 怡春院在线视频| 精品久久久久久久久久久久久久久 | 亚洲天堂久久久久| 日韩精品一区二区三区三区免费| 天天色棕合合合合合合合| 中文字幕av日韩| a级片在线免费| 国产精品久久二区| 韩国精品福利一区二区三区| 日韩精品欧美在线| 欧美日韩1区| 婷婷免费在线观看| www.欧美日韩国产在线| 亚洲av无一区二区三区| 午夜精品久久久久久久久久久| 中文字幕在线2018| 日韩精品视频免费在线观看| yellow91字幕网在线| 欧美一区二区视频97| 激情综合五月| 神马影院午夜我不卡影院| 亚洲午夜在线| 欧美美女一级片| 久久蜜桃av一区二区天堂| 欧美日韩人妻精品一区二区三区| 91国产福利在线| 免费国产羞羞网站视频| 日韩中文字幕在线看| 欧美动物xxx| 国产区一区二区| 欧美福利影院| 色婷婷一区二区三区av免费看| 91丝袜美腿高跟国产极品老师 | www.5588.com毛片| 色婷婷av一区二区三区gif| 亚洲AV无码一区二区三区少妇| 在线观看视频99| 成人勉费视频| 国产一区二区三区免费不卡| 欧美久久视频| 日本国产一级片| 久久精品一区二区三区av| 日韩精品手机在线| 亚洲高清色综合| 乱插在线www| 亚洲综合国产精品| 婷婷综合伊人| xxww在线观看| 国产精品理伦片| 亚洲一区二区人妻| 社区色欧美激情 | 免费视频成人| 在线视频不卡一区二区| 奇米色一区二区| 一区二区伦理片| 91久久精品网| 久草在线青青草| 国产成人精品一区二区在线 | 美女av免费观看| 国产一区二区三区在线观看精品| 99自拍视频在线| 91精品国产丝袜白色高跟鞋| 黄色一级大片在线免费看产| 成人精品一区二区三区| 91欧美国产| 成人亚洲免费视频| 亚洲色图欧美在线| 国产日韩欧美中文字幕| 欧美巨猛xxxx猛交黑人97人| 日本一区影院| 欧美国产日韩激情| 99国产一区二区三精品乱码| 在线精品免费视| 中文欧美在线视频| 日本成人在线网站| 男人天堂网站在线| 成人av一区二区三区| 日韩精品在线免费视频| 亚洲欧美中文在线视频| 91在线亚洲| www.-级毛片线天内射视视| 国产精品一区三区| 少妇一级淫片免费放中国 | 97人人做人人爽香蕉精品| 日日噜噜噜噜夜夜爽亚洲精品| 另类小说一区二区三区| 1024手机在线视频| 亚洲国产毛片完整版| 欧洲一区二区三区精品| 亚洲欧美日韩在线综合| 国产精品77777| 一级黄色大片视频| 日韩在线国产精品| 成人另类视频| 蜜臀久久99精品久久久酒店新书| 国产精品嫩草99a| 国产 日韩 欧美 精品| 日本成人黄色片| 一精品久久久| 波多野结衣影院| 欧美猛男男办公室激情| 国产黄a三级三级三级av在线看| 国产精品日韩欧美一区二区三区| 久久免费高清| 欧产日产国产v| 日韩经典一区二区三区| 北岛玲精品视频在线观看| 婷婷五月综合缴情在线视频| 国产人成亚洲第一网站在线播放| 国产欧美一级片| 欧美最猛性xxxxx免费| 中文不卡在线| 亚洲自拍偷拍图| 日韩精品一区二区三区swag| 亚洲天堂1区| 波多野结衣综合网| 国产精品久久久久桃色tv| 亚洲av成人精品日韩在线播放| 成人免费午夜电影| 午夜在线精品| 九九热国产在线| 日韩在线欧美在线| 成人h动漫免费观看网站| 亚洲一区二区三区观看| 91黄色免费版| www.九色在线| 无码毛片aaa在线|