C#泛型自己的理解和總結


萬事開頭難,今天先從隨筆開始,記錄工作中平時不太注意到的知識點。今天開始說下泛型。

泛型在我們項目中很是常見,使用很廣泛,我覺的它有以下幾個優點。

1.安全性。

2.性能。

3.二進制代碼的重用。

4.代碼的擴展。

下面從代碼方面分析下這些優點。

1.安全性。

這段代碼只有運行起來的時候才會報錯,  秉着錯誤得先發現的原則,這種寫法不合適。

1  var text = new ArrayList();
2  text.Add(44);
3  text.Add("mystring");
4  foreach (int item in text)
5  {
6      Console.Write(item);
7  }

如果換成泛型,試試看。

1 var list = new List<int>();
2 list.Add(44);
3 list.Add("mystring");//會編譯器會直接報錯

2.性能。

同樣使用非泛型集合,添加數據,並輸出。    可以看出,添加進集合進行了裝箱操作,賦值的時候又進行了拆箱操作。一裝一拆性能就會影響性能。

1  var text = new ArrayList();
2  text.Add(12);
3  int a = (int)text[0];

如果換成泛型,試試看。   泛型定義為int,int類型在編譯器動態生成的類中使用,不會進行裝箱和拆箱的操作。

1 var list = new List<int>();
2 list.Add(44);
3 int b = list[0];

3.二進制代碼的重用。

泛型可以使用多個類型來進行實例化。

1 var list = new List<int>();
2 list.Add(44);
3 var str = new List<string>();
4 str.Add("str");
5 var Studentclass = new List<Student>();
6 Studentclass.Add(new Student());

4.代碼的拓展。

對不同的類型的泛型,進行實例化的時候,程序編譯的時候,如果是引用類型,所有實例化的類都共用同一個本地類相同的實現代碼,如果是值類型,會為每個值類型實例化一個新類。

 

第一次開始記錄,有錯誤的地方,希望大家多多包涵。

 

 


免責聲明!

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



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