成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

掌握C#自定義泛型類:從初始化說起

開發 后端
C#自定義泛型類用得最廣泛的就是在集合(Collection)中。本文介紹了C#自定義泛型Generic的用法。

Generic是Framework 2.0的新元素,中文名字稱之為“泛型” ,特征是一個帶有尖括號的類,比如List< T>

C#自定義泛型類用得最廣泛,就是集合(Collection)中。實際上,泛型的產生其中一個原因就是為了解決原來集合類中元素的裝箱和拆箱問題(如果對裝箱和拆箱概念不明,請百度搜索)。由于泛型的使用,使得集合內所有元素都屬于同一類,這就把類型不同的隱患消滅在編譯階段——如果類型不對,則編譯錯誤。

這里只討論C#自定義泛型類。基本自定義如下:

  1. public class MyGeneric < T>  
  2. ...{  
  3.     private T member;  
  4.     public void Method (T obj)  
  5.     ...{  
  6.     }  

這里,定義了一個泛型類,其中的T作為一個類,可以在定義的類中使用。當然,要定義多個泛型類,也沒有問題。

  1. public class MyGeneric < TKey, TValue>  
  2. ...{  
  3.      private TKey key;  
  4.      private TValue value;  
  5.  
  6.      public void Method (TKey k, TValue v)  
  7.      ...{  
  8.      }  
  9. }  

泛型的初始化:泛型是需要進行初始化的。使用T doc = default(T)以后,系統會自動為泛型進行初始化。

限制:如果我們知道,這個將要傳入的泛型類T,必定具有某些的屬性,那么我們就可以在MyGeneric< T>中使用T的這些屬性。這一點,是通過interface來實現的。

  1. // 先定義一個interface  
  2. public interface IDocument  
  3. ...{  
  4.    string Title ...{get;}  
  5.    string Content ...{get;}  
  6. }  
  7.  
  8. // 讓范型類T實現這個interface  
  9. public class MyGeneric < T>  
  10. where T : IDocument  
  11. ...{  
  12.      public void Method(T v)  
  13.      ...{  
  14.           Console.WriteLine(v.Title);  
  15.      }  
  16. }  
  17.  
  18. // 傳入的類也必須實現interface  
  19. public class Document : IDocument  
  20. ...{  
  21. ......  
  22. }  
  23.  
  24. // 使用這個泛型  
  25. MyGeneric< Document> doc = new MyGeneric< Document>(); 

泛型方法:我們同樣可以定義泛型的方法

  1. void Swap< T> (ref T x, ref T y)  
  2. ...{  
  3. T temp = x;  
  4. x = y;  
  5. y = temp;  
  6. }  

泛型代理(Generic Delegate):既然能夠定義泛型方法,自然也可以定義泛型代理

  1. public delegate void delegateSample < T> (ref T x, ref T y)  
  2.  
  3. private void Swap (ref T x, ref T y)  
  4. ...{  
  5.     T temp = x;  
  6.     x = y;  
  7.     y = temp;  
  8. }  
  9.  
  10. // 調用  
  11. public void Run()  
  12. ...{  
  13.    int i,j;  
  14.    i = 3;  
  15.    j = 5;  
  16.    delegateSample< int> sample = new delegateSample< int> (Swap);  
  17.    sample(i, j);  

設置可空值類型:一般來說,值類型的變量是非空的。但是,Nullable< T>可以解決這個問題。

  1. Nullable< int> x;   // 這樣就設置了一個可空的整數變量x  
  2. x = 4;  
  3. x += 3;  
  4. if (x.HasValue)   // 使用HasValue屬性來檢查x是否為空  
  5. ...{ Console.WriteLine ("x="+x.ToString());  
  6. }  
  7. x = null;    // 可設空值 

使用ArraySegment< T>來獲得數組的一部分。如果要使用一個數組的部分元素,直接使用ArraySegment來圈定不失為一個不錯的辦法。

  1. int[] arr = ...{1, 2, 3, 4, 5, 6, 7, 8, 9};  
  2. // ***個參數是傳遞數組,第二個參數是起始段在數組內的偏移,第三個參數是要取連續多少個數  
  3. ArraySegment< int> segment = new ArraySegment< int>(arr, 2, 3);  // (array, offset, count)   
  4.  
  5. for (int i = segment.Offset; i< = segment.Offset + segment.Count; i++)  
  6. ...{  
  7.    Console.WriteLine(segment.Array[i]);    // 使用Array屬性來訪問傳遞的數組  

在例子中,通過將Offset屬性和Count屬性設置為不同的值,可以達到訪問不同段的目的。

以上就是C#自定義泛型類的用法介紹。

【編輯推薦】

  1. C#多線程控制進度條之長任務操作
  2. C#多線程控制進度條之長異步操作
  3. C#多線程控制進度條之異步調用
  4. C#多線程控制進度條之多線程安全
  5. C# listview進度條顯示淺析
責任編輯:book05 來源: cnblogs
相關推薦

2009-08-26 18:28:44

C#數組

2009-09-18 11:15:52

C#數組初始化

2009-07-31 17:51:27

C#對象初始化

2009-09-02 18:03:19

C#實現泛型類

2009-09-17 16:06:22

C#數組初始化

2009-08-27 10:31:39

C#對象初始化器

2009-09-02 16:52:55

C#數組初始化

2009-08-04 08:58:01

C#自定義特性

2009-08-03 16:37:49

C#異常類

2009-09-17 16:17:41

C#參差數組初始化

2009-08-26 15:28:52

C#對象集合初始化器

2009-08-28 11:24:48

C#一維數組初始化

2009-08-26 09:36:03

C#泛型

2009-08-03 13:34:06

自定義C#控件

2009-08-28 17:45:19

C#自定義數據

2009-08-03 13:39:46

C#自定義用戶控件

2009-09-03 15:46:57

C#自定義事件

2025-01-10 09:28:25

2009-09-18 11:33:37

C#二維數組初始化

2009-08-31 10:38:34

C#變量初始化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品一二三 | 日韩中文字幕在线视频 | 国产高清精品在线 | 久久久久久久成人 | 国产资源在线视频 | 国产欧美一区二区三区免费 | 精品一区二区三区在线观看国产 | 国产人免费人成免费视频 | 美日韩视频 | 亚洲一区二区在线播放 | 丝袜美腿av | 国产精品高潮呻吟久久av黑人 | 免费的黄色片子 | 国产精品久久久久久久岛一牛影视 | 成人精品一区二区三区中文字幕 | 日韩欧美国产一区二区三区 | 99视频在线免费观看 | 一区二区亚洲 | 亚洲一区二区三区在线视频 | 国产精品精品视频一区二区三区 | 亚洲综合网站 | 久久久久国产一区二区三区不卡 | 欧美一级在线视频 | 亚洲精品久久久一区二区三区 | 亚洲欧美日韩一区二区 | 日韩在线视频免费观看 | 午夜a级理论片915影院 | 91精品久久久久久久久 | 精品久久久久久久久久 | 在线免费观看黄a | 国产精品永久久久久 | 羞羞的视频免费在线观看 | 日韩免费网站 | 日韩综合一区 | 亚洲视频区 | 一级黄色片毛片 | 国产免费一区二区 | 国产精品久久久久久238 | 黄色片av | 麻豆av片 | 精品国产免费一区二区三区演员表 |