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

C# 泛型接口應用淺析

開發 后端
C# 泛型接口的概念是什么?C# 泛型接口的使用是如何進行的呢?那么本文就向你詳細C# 泛型接口的內容。

C# 泛型接口的實用性:為泛型集合類或表示集合中項的泛型類定義接口通常很有用。對于泛型類,使用泛型接口十分可取,例如使用 IComparable﹤T﹥ 而不使用 IComparable,這樣可以避免值類型的裝箱和取消裝箱操作。.NET Framework 2.0 類庫定義了若干新的泛型接口,以用于 System.Collections.Generic 命名空間中新的集合類。將接口指定為類型參數的約束時,只能使用實現此接口的類型。下面的代碼示例顯示從 GenericList﹤T﹥ 類派生的 SortedList﹤T﹥ 類。SortedList﹤T﹥ 添加了約束 where T : IComparable﹤T﹥。這將使 SortedList﹤T﹥ 中的 BubbleSort 方法能夠對列表元素使用泛型 CompareTo 方法。在此示例中,列表元素為簡單類,即實現 IComparable﹤Person﹥ 的 Person。

C# 泛型接口代碼

  1. //Type parameter T in angle brackets.  
  2. public class GenericList﹤T﹥ :  
  3.  System.Collections.Generic.IEnumerable﹤T﹥  
  4. {  
  5. protected Node head;  
  6. protected Node current = null;  
  7.  
  8. // Nested class is also generic on T  
  9. protected class Node  
  10. {  
  11. public Node next;  
  12. private T data;  //T as private member datatype  
  13.  
  14. public Node(T t)  //T used in non-generic constructor  
  15. {  
  16. next = null;  
  17. data = t;  
  18. }  
  19.  
  20. public Node Next  
  21. {  
  22. get { return next; }  
  23. set { next = value; }  
  24. }  
  25.  
  26. public T Data  //T as return type of property  
  27. {  
  28. get { return data; }  
  29. set { data = value; }  
  30. }  
  31. }  
  32.  
  33. public GenericList()  //constructor  
  34. {  
  35. head = null;  
  36. }  
  37.  
  38. public void AddHead(T t)  //T as method parameter type  
  39. {  
  40. Node n = new Node(t);  
  41. n.Next = head;  
  42. head = n;  
  43. }  
  44.  
  45. // Implementation of the iterator  
  46. public System.Collections.Generic.IEnumerator﹤T﹥ GetEnumerator()  
  47. {  
  48. Node current = head;  
  49. while (current != null)  
  50. {  
  51. yield return current.Data;  
  52. current = current.Next;  
  53. }  
  54. }  
  55.  
  56. // IEnumerable﹤T﹥ inherits from IEnumerable, therefore this class   
  57. // must implement both the generic and non-generic versions of   
  58. // GetEnumerator. In most cases, the non-generic method can   
  59. // simply call the generic method.  
  60. System.Collections.IEnumerator   
  61. System.Collections.IEnumerable.GetEnumerator()  
  62. {  
  63. return GetEnumerator();  
  64. }  
  65. }  
  66.  
  67. public class SortedList﹤T﹥ :  
  68.  GenericList﹤T﹥ where T : System.IComparable﹤T﹥  
  69. {  
  70. // A simple, unoptimized sort algorithm that   
  71. // orders list elements from lowest to highest:  
  72.  
  73. public void BubbleSort()  
  74. {  
  75. if (null == head || null == head.Next)  
  76. {  
  77. return;  
  78. }  
  79. bool swapped;  
  80.  
  81. do 
  82. {  
  83. Node previous = null;  
  84. Node current = head;  
  85. swapped = false;  
  86.  
  87. while (current.next != null)  
  88. {  
  89. //  Because we need to call this method, the SortedList  
  90. //  class is constrained on IEnumerable﹤T﹥  
  91. if (current.Data.CompareTo(current.next.Data) ﹥ 0)  
  92. {  
  93. Node tmp = current.next;  
  94. current.next = current.next.next;  
  95. tmp.next = current;  
  96.  
  97. if (previous == null)  
  98. {  
  99. head = tmp;  
  100. }  
  101. else 
  102. {  
  103. previous.next = tmp;  
  104. }  
  105. previous = tmp;  
  106. swapped = true;  
  107. }  
  108. else 
  109. {  
  110. previous = current;  
  111. current = current.next;  
  112. }  
  113. }  
  114. while (swapped);  
  115. }  
  116. }  
  117.  
  118. // A simple class that implements   
  119. //IComparable﹤T﹥ using itself as the   
  120. // type argument. This is a common  
  121. // design pattern in objects that   
  122. // are stored in generic lists.  
  123. public class Person : System.IComparable﹤Person﹥  
  124. {  
  125. string name;  
  126. int age;  
  127.  
  128. public Person(string s, int i)  
  129. {  
  130. name = s;  
  131. age = i;  
  132. }  
  133.  
  134. // This will cause list elements  
  135. // to be sorted on age values.  
  136. public int CompareTo(Person p)  
  137. {  
  138. return age - p.age;  
  139. }  
  140.  
  141. public override string ToString()  
  142. {  
  143. return name + ":" + age;  
  144. }  
  145.  
  146. // Must implement Equals.  
  147. public bool Equals(Person p)  
  148. {  
  149. return (this.age == p.age);  
  150. }  
  151. }  
  152.  
  153. class Program  
  154. {  
  155. static void Main()  
  156. {  
  157. //Declare and instantiate a new generic SortedList class.  
  158. //Person is the type argument.  
  159. SortedList﹤Person﹥ list = new SortedList﹤Person﹥();  
  160.  
  161. //Create name and age values to initialize Person objects.  
  162. string[] names = new string[]   
  163. {   
  164. "Franscoise",   
  165. "Bill",   
  166. "Li",   
  167. "Sandra",   
  168. "Gunnar",   
  169. "Alok",   
  170. "Hiroyuki",   
  171. "Maria",   
  172. "Alessandro",   
  173. "Raul"   
  174. };  
  175.  
  176. int[] ages = new int[] { 45, 19, 28,  
  177.  23, 18, 9, 108, 72, 30, 35 };  
  178.  
  179. //Populate the list.  
  180. for (int x = 0; x ﹤ 10; x++)  
  181. {  
  182. list.AddHead(new Person(names[x], ages[x]));  
  183. }  
  184.  
  185. //Print out unsorted list.  
  186. foreach (Person p in list)  
  187. {  
  188. System.Console.WriteLine(p.ToString());  
  189. }  
  190. System.Console.WriteLine("Done with unsorted list");  
  191.  
  192. //Sort the list.  
  193. list.BubbleSort();  
  194.  
  195. //Print out sorted list.  
  196. foreach (Person p in list)  
  197. {  
  198. System.Console.WriteLine(p.ToString());  
  199. }  
  200. System.Console.WriteLine("Done with sorted list");  
  201. }  

可將多重接口指定為單個類型上的約束,如下所示:

C# 泛型接口代碼

  1. class Stack﹤T﹥ where T : System.IComparable﹤T﹥, IEnumerable﹤T﹥  
  2. {  

一個接口可定義多個類型參數,如下所示:

C# 泛型接口代碼

  1. interface IDictionary﹤K, V﹥  
  2. {  

類之間的繼承規則同樣適用于接口:

C# 泛型接口代碼

  1. interface IMonth﹤T﹥ { }  
  2.  
  3. interface IJanuary : IMonth﹤int﹥ { }  //No error  
  4. interface IFebruary﹤T﹥ : IMonth﹤int﹥ { }  //No error  
  5. interface IMarch﹤T﹥: IMonth﹤T﹥ { }//No error  
  6. //interface IApril﹤T﹥  : IMonth﹤T, U﹥ {}  //Error 

如果泛型接口為逆變的,即僅使用其類型參數作為返回值,則此泛型接口可以從非泛型接口繼承。在 .NET Framework 類庫中,IEnumerable﹤T﹥ 從 IEnumerable 繼承,因為 IEnumerable﹤T﹥ 僅在 GetEnumerator 的返回值和當前屬性 getter 中使用 T。

具體類可以實現已關閉的構造接口,如下所示:

C# 泛型接口代碼

  1. interface IBaseInterface﹤T﹥ { }  
  2.  
  3. class SampleClass : IBaseInterface﹤string﹥ { } 

只要類參數列表提供了接口必需的所有參數,泛型類便可以實現泛型接口或已關閉的構造接口,如下所示:

C# 泛型接口代碼

  1. interface IBaseInterface1﹤T﹥ { }  
  2. interface IBaseInterface2﹤T, U﹥ { }  
  3.  
  4. class SampleClass1﹤T﹥ :   
  5. IBaseInterface1﹤T﹥ { }//No error  
  6. class SampleClass2﹤T﹥ :   
  7. IBaseInterface2﹤T, string﹥ { }//No error 

對于泛型類、泛型結構或泛型接口中的方法,控制方法重載的規則相同。

C# 泛型接口的相關內容就向你介紹到這里,希望對你了解和學習C# 泛型接口有所幫助。

【編輯推薦】

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

2009-08-24 17:27:05

C#泛型應用

2009-08-24 17:58:19

C# 泛型集合

2009-08-24 16:39:19

C# 泛型應用

2009-08-24 11:35:20

C# 泛型應用

2009-08-24 17:39:21

C# 泛型集合

2009-08-24 18:15:24

C# Dictiona

2009-08-24 14:51:25

C# 泛型泛型類型

2009-08-24 15:50:23

C# 泛型C# 泛型委托

2009-08-24 14:20:13

C# 強制類型轉換

2009-08-07 08:53:52

C# ICloneab

2009-08-24 14:26:42

C# 泛型類

2009-08-24 10:37:27

C# 泛型

2009-08-24 15:28:19

C# 泛型方法

2009-08-24 13:31:38

C# 泛型約束

2009-08-24 10:07:57

C#泛型處理

2009-08-24 16:19:42

C# 泛型方法

2009-08-24 16:01:44

C# 泛型

2009-08-24 13:41:23

C# 泛型約束

2009-08-27 13:05:06

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

2009-08-31 16:37:20

C#接口定義
點贊
收藏

51CTO技術棧公眾號

精品一区二区三区蜜桃| 日本一区二区在线看| 婷婷开心久久网| 久久96国产精品久久99软件| 在线视频精品免费| 一本一道久久a久久精品蜜桃| 欧美一级精品大片| www插插插无码免费视频网站| 无码精品在线观看| 美国毛片一区二区三区| 欧美激情在线播放| 婷婷色一区二区三区| 蜜桃精品一区二区三区| 日韩欧美极品在线观看| 男同互操gay射视频在线看| 五月婷婷丁香六月| 国内精品伊人久久久久av一坑 | 波多野在线观看| 久久人人爽人人爽| 成人国产一区二区| 怡红院男人的天堂| 国产一区二区精品| 麻豆国产va免费精品高清在线| 麻豆国产精品一区| 日韩最新av| 欧美三级电影网站| 欧美变态另类刺激| 伊人电影在线观看| 国产精品久久久久久久午夜片| 黄色国产精品一区二区三区| 国产乱码精品一区二区| 日韩国产精品久久| 欧美性做爰毛片| 久久伊人成人网| 亚洲国产一成人久久精品| 亚洲人高潮女人毛茸茸| 亚洲一区二区乱码| 精品视频高潮| 日韩精品一区二区三区在线播放 | 国产综合色区在线观看| 亚欧色一区w666天堂| 中文字幕在线中文| free性欧美hd另类精品| 国产精品女主播av| 日韩国产欧美精品| 嫩草研究院在线观看| 成人爱爱电影网址| 动漫一区二区在线| 精品久久久久中文慕人妻| 韩国欧美国产1区| 国产美女直播视频一区| 欧美国产成人精品一区二区三区| 亚洲视频一区| 久久噜噜噜精品国产亚洲综合| 精品国产视频一区二区三区| 五月天久久777| 久久精品视频中文字幕| 摸摸摸bbb毛毛毛片| 免费视频一区三区| 国产亚洲精品成人av久久ww| xxx在线播放| 精品国精品国产自在久国产应用| 亚洲天堂成人在线视频| 国产在线综合视频| 色135综合网| 久久久999成人| 中文国语毛片高清视频| 亚洲成人二区| 欧美黑人国产人伦爽爽爽| 欧美又粗又大又长| 精品白丝av| 欧洲中文字幕国产精品| 波多野结衣mp4| 久久国产生活片100| 亚洲最大av网| 天天av天天翘| 国产性天天综合网| 黄色www在线观看| 久久国产精品黑丝| 日本韩国一区二区| 亚洲第一天堂久久| 91午夜精品| 亚洲人成电影在线播放| 国产精品综合激情| 欧美精品不卡| 日本欧美一二三区| 97免费观看视频| 成人av第一页| 日韩片电影在线免费观看| 黄色一级片在线观看| 亚洲五月六月丁香激情| 黄色a级片免费| 91嫩草国产线观看亚洲一区二区| 精品久久久网站| 亚洲av综合一区二区| 99精品在线观看| 97久久精品视频| 中文字幕欧美色图| 粉嫩久久99精品久久久久久夜| 久久精品欧美| 麻豆av免费在线观看| 亚洲成av人综合在线观看| 日本爱爱免费视频| heyzo欧美激情| 国产亚洲欧洲在线| 九九在线观看视频| 美女视频网站黄色亚洲| 国产乱码精品一区二区三区日韩精品| 久久米奇亚洲| 亚洲午夜精品在线| 色呦色呦色精品| 免费成人网www| 欧美激情高清视频| 一级片在线观看视频| 99国产精品久久久久久久久久| 伊人av成人| 免费h视频在线观看| 欧美一区二区三区的| 免费在线观看你懂的| 欧美国产免费| 国产在线视频2019最新视频| 日韩资源在线| 亚洲一区二区三区国产| 久久综合在线观看| 日韩成人精品一区| 欧美在线一级va免费观看| 亚洲国产剧情在线观看| 亚洲欧洲av另类| 日本在线一二三区| 黑丝美女一区二区| 欧美一二三视频| 日本波多野结衣在线| 樱花影视一区二区| 欧美高清精品一区二区| 日韩在线第七页| 国产精品美女在线| 户外极限露出调教在线视频| 天天色综合天天| 又色又爽又黄18网站| 91精品亚洲| 成人在线观看视频网站| 97超碰国产一区二区三区| 日韩欧美在线观看视频| 菠萝菠萝蜜网站| 99精品视频免费观看视频| 国产精品日韩二区| 人妖欧美1区| 亚洲成人av片| 日本中文字幕在线免费观看| 99久久99久久综合| 国产精品久久..4399| 一级毛片精品毛片| 色中色综合影院手机版在线观看| 99久久久国产精品无码网爆| 亚洲乱码中文字幕| 无套白嫩进入乌克兰美女| 欧美福利网址| 国产精品一区二区三区免费| 国产桃色电影在线播放| 亚洲国产日韩欧美在线图片| 国产一级淫片a| 97久久精品人人做人人爽50路| 精品欧美一区免费观看α√| 综合国产视频| 国产精品久久精品| 老司机在线视频二区| 日韩视频一区二区三区| 中文字幕一区二区三区手机版| 不卡区在线中文字幕| 午夜肉伦伦影院| 成人av动漫在线观看| 成人激情视频在线播放| 深夜国产在线播放| 亚洲精品720p| www.亚洲激情| 亚洲精品网站在线观看| 好男人香蕉影院| 日韩中文字幕区一区有砖一区 | 水野朝阳av一区二区三区| 性欧美.com| 欧美成人精品午夜一区二区| 亚州国产精品久久久| 牛牛热在线视频| 欧美精品色一区二区三区| 久久黄色免费网站| 久久久久久久久一| 911av视频| 国产精品视频| 亚洲精品久久久久久一区二区| 高清久久精品| 51精品国产黑色丝袜高跟鞋| h视频网站在线观看| 日韩精品一区在线| 久久国产视频一区| 亚洲精品免费电影| 无码国产69精品久久久久同性| 韩国欧美国产1区| 女人和拘做爰正片视频| 天天影视综合| 蜜桃传媒视频麻豆第一区免费观看| 亚洲伦理久久| 国产69久久精品成人看| 黄a在线观看| 亚洲欧美www| 亚洲av无码国产精品永久一区 | 国产精品无码一本二本三本色| 久久一本综合| 久久精品丝袜高跟鞋| av在线亚洲一区| 青青草精品毛片| 在线观看操人| 视频直播国产精品| 日本在线视频1区| 日韩欧美国产电影| 中文字幕一二三四| 欧美日韩国产精品专区| 成年人一级黄色片| 欧美激情一区二区三区| 天堂www中文在线资源| 国产毛片精品国产一区二区三区| 日本在线观看a| 亚洲区第一页| 色哺乳xxxxhd奶水米仓惠香| 成人一区不卡| 免费h精品视频在线播放| 91蝌蚪精品视频| 91久久精品久久国产性色也91| 欧美一区久久久| 91国内揄拍国内精品对白| 青草影视电视剧免费播放在线观看| 中文字幕日韩在线播放| 欧美69xxxxx| 日韩精品在线观看网站| 神宫寺奈绪一区二区三区| 日韩亚洲欧美综合| av无码精品一区二区三区宅噜噜| 欧美午夜免费电影| 国产精品尤物视频| 欧美在线视频全部完| 99久久精品国产亚洲| 欧美日韩国产页| 日韩免费黄色片| 午夜成人免费电影| 黄色激情视频在线观看| 五月婷婷久久综合| 国产精品日日夜夜| 亚洲国产精品久久久久秋霞影院| 青青草手机在线观看| 亚洲女人小视频在线观看| 97在线观看免费高| 亚洲激情av在线| 四虎免费在线视频| 亚洲夂夂婷婷色拍ww47| 日韩欧美亚洲国产| 懂色aⅴ精品一区二区三区蜜月| 国产精品7777777| 日韩欧美精品免费在线| 中文天堂在线视频| 欧美猛男男办公室激情| 国产视频在线观看视频| 欧美第一区第二区| 免费av网站在线播放| 亚洲精美色品网站| 国产高清一区在线观看| 最新91在线视频| 国产调教视频在线观看| 久久久久久久91| 免费在线小视频| 国产精品jizz在线观看麻豆| 久久久精品一区二区毛片免费看| 国产精品一区二区三区免费视频| 9999精品| 国产青春久久久国产毛片| 久久1电影院| 欧美日韩一区二区视频在线观看| 欧美精品尤物在线观看| 干日本少妇视频| 在线亚洲精品| 男女无套免费视频网站动漫| 国产在线精品一区二区| 成人性生活免费看| 国产精品蜜臀av| 久久久久无码国产精品| 欧美日韩美女视频| 亚洲综合视频在线播放| 欧美videofree性高清杂交| 外国精品视频在线观看| 久久精品久久精品亚洲人| 激情视频网站在线播放色| 国产精品久久久久9999| 欧美影院精品| 欧美日韩亚洲免费| 欧美区国产区| 不卡av免费在线| 高清在线成人网| 免费看日本黄色片| 亚洲高清在线精品| 中文字幕av久久爽| 亚洲第一精品久久忘忧草社区| 成人免费在线视频网| 欧美激情亚洲自拍| 国产成人久久精品麻豆二区| 鬼打鬼之黄金道士1992林正英| 国产精品一区高清| 久久综合久久久久| 麻豆中文一区二区| 特级西西人体4444xxxx| 亚洲免费在线电影| 亚洲精品一区二三区| 亚洲国产精品福利| 综合图区亚洲| 国产精品色午夜在线观看| 国产乱论精品| 国产精品久久久影院| 蜜臀精品久久久久久蜜臀| 少妇户外露出[11p]| 一区二区在线观看不卡| 亚洲天堂狠狠干| 亚洲欧洲xxxx| 川上优av中文字幕一区二区| 91在线直播亚洲| 欧美色图一区| 人妻内射一区二区在线视频| 国产成人午夜精品5599| 亚洲国产精品一区二区久久hs| 日韩欧美在线免费观看| 天天爽夜夜爽夜夜爽| 欧美黑人一级爽快片淫片高清| 黄页网站大全在线观看| 精品国产精品| heyzo国产| 99精品国产视频| 国产午夜视频在线播放| 欧美v亚洲v综合ⅴ国产v| 成人影院在线观看| 国产精品专区h在线观看| 成人毛片免费看| 免费激情视频在线观看| 91久色porny| 久久久久99精品成人片三人毛片| 精品久久久久久亚洲综合网| 2020国产在线视频| 91久久久一线二线三线品牌| 91精品啪在线观看国产81旧版| 亚洲va综合va国产va中文| 国产精品网站在线观看| 中文字幕精品一区二| 中文字幕亚洲一区在线观看 | 香蕉久久网站| 亚欧激情乱码久久久久久久久| 中文字幕精品三区| 一级特黄aaa| 久久影院资源网| 亚洲精品影片| 欧美视频在线观看视频| av中文字幕在线不卡| 午夜精品三级久久久有码| 日韩精品视频免费在线观看| 成人爽a毛片免费啪啪| 日韩国产美国| 精品一区二区三区视频在线观看 | 一本久道久久综合中文字幕| 每日更新在线观看av| 国产成人一区二区三区小说| 国产一区2区| 午夜剧场高清版免费观看 | 制服丝袜综合日韩欧美| 狠狠色丁香婷婷综合| 激情综合网五月天| 亚洲福利在线视频| 日本电影欧美片| 中文字幕日韩一区二区三区| 夫妻av一区二区| 亚洲高清毛片一区二区| 国产一区av在线| avtt久久| 日韩中文字幕在线视频观看| 国产目拍亚洲精品99久久精品| 91精品国产乱码久久久久| 精品久久国产精品| 精品三级在线观看视频| 日韩中文字幕免费在线| 亚洲欧美福利一区二区| 五月婷婷狠狠干| 成人美女av在线直播| 国内在线观看一区二区三区| 美女久久久久久久久久| 欧美夫妻性生活| 蜜桃视频在线网站| 在线观看视频黄色| 97久久人人超碰| 国产精品九九九九| 91国产视频在线播放| 四虎成人精品永久免费av九九| 伊人久久久久久久久| 在线免费观看成人短视频| av片在线观看永久免费| 欧美凹凸一区二区三区视频| 国产乱子轮精品视频| 青青视频在线免费观看|