泛型的優點


1、性能

  對值類型使用非泛型集合類,在把值類型轉換為引用類型,和把引用類型轉換為值類型時,需要進行裝箱和拆箱操作。裝箱和拆箱的操作很容易實現,但是性能損失較大。假如使用泛型,就可以避免裝箱和拆箱操作。

1 ArrayList list=new ArrayList();
2 list.Add(20);    //裝箱,list存放的是object類型元素,須將值類型轉化為引用類型
3 int i=(int)list[0];     //拆箱,list[0]的類型是object,要賦值就得把引用類型轉化為值類型

  如果換成泛型編程,就不會有裝箱和拆箱的性能損失。

1 List<T> list=new List<int>();
2 list.Add(20);    //因為指定了用int來實例化,因此不必裝箱
3 int i=list[0];    //同樣地,訪問時也不需要拆箱

2、類型安全

  與ArrayList類一樣,如果使用對象,可以在這個集合中添加任意類型。

如果使用非泛型編程,如下代碼,就有可能在某些情況下會發生異常。

1 ArrayList list=new ArrayList();
2 list.Add(20);
3 list.Add("string");
4 list.Add(new MyClass());
5 
6  foreach(int i in list)
7 {
8        Console.WriteLine(i);    //這里會有個異常,因為並不是集合中的所有元素都可以轉化為int
9  }

  如果該用泛型編程,則可以避免這種異常,讓編譯器檢查出錯誤。

1 List<int> list=new List<int>();
2 list.Add(20);
3 lsit.Add(”string”);   //編譯時報錯,只能報整數類型添加到集合中
4 list.Add(new MyClass());   //同上


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM