|
萬事開頭難,今天先從隨筆開始,記錄工作中平時不太注意到的知識點(diǎn)。今天開始說下泛型。 泛型在我們項(xiàng)目中很是常見,使用很廣泛,我覺的它有以下幾個優(yōu)點(diǎn)。 1.安全性。 2.性能。 3.二進(jìn)制代碼的重用。 4.代碼的擴(kuò)展。 下面從代碼方面分析下這些優(yōu)點(diǎn)。 1.安全性。 這段代碼只有運(yùn)行起來的時候才會報(bào)錯, 秉著錯誤得先發(fā)現(xiàn)的原則,這種寫法不合適。 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");//會編譯器會直接報(bào)錯2.性能。 同樣使用非泛型集合,添加數(shù)據(jù),并輸出。 可以看出,添加進(jìn)集合進(jìn)行了裝箱操作,賦值的時候又進(jìn)行了拆箱操作。一裝一拆性能就會影響性能。 1 var text = new ArrayList();2 text.Add(12);3 int a = (int)text[0]; 如果換成泛型,試試看。 泛型定義為int,int類型在編譯器動態(tài)生成的類中使用,不會進(jìn)行裝箱和拆箱的操作。 1 var list = new List<int>();2 list.Add(44);3 int b = list[0]; 3.二進(jìn)制代碼的重用。 泛型可以使用多個類型來進(jìn)行實(shí)例化。 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.代碼的拓展。 對不同的類型的泛型,進(jìn)行實(shí)例化的時候,程序編譯的時候,如果是引用類型,所有實(shí)例化的類都共用同一個本地類相同的實(shí)現(xiàn)代碼,如果是值類型,會為每個值類型實(shí)例化一個新類,詳細(xì)內(nèi)容,同學(xué)可以查找相關(guān)的c#教程。 第一次開始記錄,有錯誤的地方,希望大家多多包涵。 |
|
|