麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C# > 正文

關于C#泛型

2023-05-20 20:23:40
字體:
來源:轉載
供稿:網友

C#提供了一個非常方便的東西——泛型,那么什么是泛型,泛型有哪些好處,如何使用泛型?下面就做一個詳細的介紹:

1、什么是泛型?

通過泛型可以定義類型安全類,而不會損害類型安全、性能或工作效率

2、實例化泛型

(1)可以使用任何類型來聲明和實例化

(2)申明和實例話都必須用一個特定的類型來代替一般類型T

(3)舉例說明:

//原來寫法
Public class Stack
{
     object[] m_Items; 
     public void Push(object item) 
     {...} 
     public object Pop() 
     {...}
}
Stack stack = new Stack();
stack.Push(1);
int number = (int)stack.Pop();

//有了泛型后
Public class Stack <T>

     T[] m_Items; 
     public void Push(T item) 
     {...} 
     public T Pop() 
     {...}
}
Stack <int> stack = new Stack <int> ();
stack.Push(1);
int number = (int)stack.Pop();

3、泛型的好處

(1)一次性的開發、測試和部署代碼,通過任何類型來重用它

(2)編譯器支持和類型安全

(3)不會強行對值類型進行裝箱和取消裝箱,或者對引用類型進行向下強制類型轉換,所以性能得到顯著提高。

 注:值類型大概可以提高200%,引用類型大概為100%

4、多個泛型

單個類型可以定義多個泛型

5、泛型別名

(1)在文件頭部使用using 為特定類型取別名,別名作用范圍是整個文件

(2)舉例說明

using List = LinkedList <int,string> ;
class ListClient

     static void Main(string[] args) 
     { 
          List list = new List(); 
          list.AddHead(123, "AAA "); 
     }
}

6、泛型約束

A 派生約束

如:

public class LinkedList <K,T> where K:IComparable
{
T Find(K key)
{
if (str.Key.CompareTo(key) == 0)//只有實現這個接口才可比較
}
}

注意:

(1)所有的派生約束必須放在類的實際派生列表之后

如:public class LinkedList <K,T> :IEnumerable <T> where K:IComparable <K> {...}

(2)一個泛型參數上可以約束多個接口(用逗號分隔)

public class LinkedList <K,T> where K:IComparable <K> ,IConvertible

(3)在一個約束中最多只能使用一個基類

(4)約束的基類不能是密封類或靜態類

(5)不能將System.Delegate或System.Array約束為基類

(6)可以同時約束一個基類以及一個或多個接口,但是該基類必須首先出現在派生約束列表中。

(7)C#允許你將另一個泛型參數指定為約束

public class MyClass <T,U> where T:U
        {...}

(8)可以自己定義基類或接口進行泛型約束

(9)自定義的接口或基類必須與泛型具有一致的可見性

B構造函數約束

如:

class Node <K,T> where T:new()
       {
      }

注意:

可以將構造函數的約束和派生約束結合起來,前提是構造函數的約束出現在約束列表中的最后

C引用/值類型約束

(1)可以使用struct約束將泛型參數約束為值類型(如int、bool、enum),或任何自定義結構

(2)同樣可以使用class約束將泛型參數約束為引用類型

(3)不能將引用/值類型約束與基類約束一起使用,因為基類約束涉及到類

(4)不能使用結構和默認構造函數約束,因為默認構造函數約束也涉及到類

(5)雖然您可以使用類和默認構造函數約束,但是這樣做沒有任何價值

(6)可以將引用/值類型約束與接口約束組合起來,前提是引用/值類型約束出現在約束列表的開頭

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 中文字幕网址 | aaaaaaa毛片 | 九九热精品免费视频 | av之家在线观看 | 在线1区| 国产精品自拍av | 久久伊人国产精品 | 特级毛片免费视频 | 一级大片在线观看 | 成年人黄色免费网站 | 国产成人高潮免费观看精品 | 日日操日日操 | 亚洲精品午夜国产va久久成人 | 欧美一区二区三区久久精品视 | 国产欧美亚洲精品 | 海外中文字幕在线观看 | 另类亚洲孕妇分娩网址 | 免费在线观看亚洲 | 国产好片无限资源 | 天天色综合6 | 午夜热门福利 | 1区2区3区国产 | 中国女警察一级毛片视频 | bt 自拍 另类 综合 欧美 | a免费视频 | 国产精品久久久久久久久久久天堂 | 91在线观看 | 国产精品一区二区三区在线 | 成人黄色小视频网站 | www国产成人免费观看视频,深夜成人网 | 国内精品久久久久久久星辰影视 | 久久久综合 | 欧美精品电影一区二区 | 97人人草| 日本a大片 | 成人小视频在线播放 | 5xsq在线视频 | 亚洲欧美成aⅴ人在线观看 av免费在线播放 | 精品亚洲午夜久久久久91 | 香蕉久草在线 | 一级做a爰性色毛片免费 |