C#進階編程讀書筆記之泛型的優點

來源:互聯網
上載者:User
泛型是.NET2.0新提供的特性。
一、泛型的一個主要優點就是效能。
在出現泛型之前,如果對實值型別使用集合類,就必須把實值型別裝箱成參考型別,然後加入到集中中,在使用集合時,又需要把參考型別拆箱成實值型別。如下面的樣本顯示了System.Collections命名空間中的ArrayList類,ArrayList儲存物件,Add()方法定義為需要把一個對象作為參數,所以要裝箱一個整數類型,讀取時又要進行拆箱。ArrayList list = new ArrayList();
list.Add(10);
int i1 = (int)list[0];
foreach(int i2 in list)
{
Console.WriteLine(i2);
}

裝箱和拆箱的實現都不複雜,但效能損失較大,如果迭代的項數多時對效能的損失更為明顯。
為了避免這種效能的損失,到了.NET2.0後,就可以使用泛型。
System.Collections.Generic命名空間中List<T>類不使用對象,而是在使用時定義類型。下面樣本,List<T>類的泛型型別定義為int,所以int類型在JIT編譯器動態產生的類中使用,不再進行裝箱和拆箱的操作,從而就避免了這方面的效能損失。List<int> list = new List<int>();
list.Add(10);
int i1= list[0];
foreach(int i2 in list)
{
Console.WriteLine(i2);
}

二、泛型的另外一個特點就是型別安全
在普通集合中,可以在這個集合中添加任何類型,如在ArrayList類型的集合中,可以添加整數,字串等類型的對象,如果這個時候用foreach去迭代集合中的元素,就會產生異常。
錯誤應該儘早發現。在泛型類List<T>中,泛型型別T定義了運行使用的類型,即除了T這種類型,其它類型無法添加到泛型的集合中去。
三、二進位代碼的重用
泛型允許更好地重用二進位代碼,泛型類可以定義一次,用許多不用類型執行個體化。如定義List<T>泛型類,則可以用int,字串等類型執行個體化。List<T> intList = new List<T>();
intList.Add(10);

List<string> stringList = new List<string>();
stringList.Add("aryang");

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.