萬事開頭難,今天先從隨筆開始,記錄工做中平時不太注意到的知識點。今天開始說下泛型。安全
泛型在咱們項目中非常常見,使用很普遍,我覺的它有如下幾個優勢。性能
1.安全性。spa
2.性能。code
3.二進制代碼的重用。blog
4.代碼的擴展。編譯器
下面從代碼方面分析下這些優勢。string
1.安全性。it
這段代碼只有運行起來的時候纔會報錯, 秉着錯誤得先發現的原則,這種寫法不合適。編譯
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 }
若是換成泛型,試試看。class
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.代碼的拓展。
對不一樣的類型的泛型,進行實例化的時候,程序編譯的時候,若是是引用類型,全部實例化的類都共用同一個本地類相同的實現代碼,若是是值類型,會爲每一個值類型實例化一個新類。
第一次開始記錄,有錯誤的地方,但願你們多多包涵。