一、泛型的優點
效能高。從前面的例子可以看出使用不需進行型別轉換,可以避免裝箱和拆箱操作,提高效能。
型別安全。泛型集合對其儲存物件進行了型別約束,不是定義時宣告的型別,是無法儲存到泛型集合中的,保證了資料型別的安全。
**重用。使用泛型型別可以最大限度地重用**,保護型別的安全以及提高效能。
使用泛型
使用泛型可以定義泛型類,泛型介面,泛型方法等。.net framework類庫在system.collection.generic愈命名空間中包含幾個新的泛型集合類,list和dictionary是其中非常重要的兩種,泛型介面icomparable和icomparer在實際中也有很重要的作用。
泛型集合list
泛型最重要的應用就是集合操作,使用泛型集合可以提高**重用性,型別安全和更佳的效能。list的用法和arraylist相似,list有更好的型別安全性,無須拆,裝箱。定義乙個list泛型集合的語法如下:
list集合名=new list();
在泛型定義中,泛型型別引數「」是必須指定的,其中t是定義泛型類時的佔位符,其並不是一種型別,僅代表某種可能的型別。在定義時t會被使用的型別代替。泛型集合list中只能有乙個引數型別,「」中的t可以對集合中的元素型別進行約束。
注意:泛型集合必須例項化,例項化時和普通類例項化時相同,必須在後面加上「()」。
如定義乙個學生類的list,示例如下:
liststudents=new list();
list新增、刪除、檢索元素的方法和arraylist相似,明顯的特點是不需要像arraylist那樣裝箱和拆箱。
using system;
using system.collections.generic;
using system.collections;
public class student
public string number
public int score
}class program
", students.count);
foreach (student stu in students)
\t\t", stu.name, stu.number, stu.score);
}students.remove(stu1);
console.writeline("集合中的元素個數為", students.count);
console.readline();}}
上面**定義了student型別的list泛型集合,其中的t被資料型別student代替,這樣定義的集合只能儲存student型別的元素,保證了型別安全,遍歷集合元素時,沒有經過拆箱操作,提高了效能。
list和arraylist的區別
list和arraylist的相同點:新增元素、刪除元素、通過索引訪問元素方法相同。
list和arraylist的不同點:
arraylist可以新增任意型別元素;list對新增的元素具有型別約束;
arratlist新增時裝箱,讀取時拆箱;list不需要裝箱,拆箱操作;
我們再看乙個例子:
using system;
using system.collections;
using system.collections.generic;
class person
//姓名
public string name
}//年齡
public int age}}
class program
\t", p.name, p.age);}}
}可以看到,泛型集合大大簡化了集合的實現**,通過它,可以輕鬆建立指定型別的集合。非但如此,泛型集合還提供了更加強大的功能,下面看看其中的排序及搜尋。
C 泛型 使用泛型List
一 泛型的優點 效能高。從前面的例子可以看出使用不需進行型別轉換,可以避免裝箱和拆箱操作,提高效能。型別安全。泛型集合對其儲存物件進行了型別約束,不是定義時宣告的型別,是無法儲存到泛型集合中的,保證了資料型別的安全。重用。使用泛型型別可以最大限度地重用 保護型別的安全以及提高效能。使用泛型 使用泛型...
泛型List與非泛型ArrayList
arraylist集合的用處越來越窄了,list static void main string args arraylist的不安全性一目了然,型別不安全,必將導致各種攻擊的產生,static void main string args 相比不安全的arraylist來說,list 的型別安全性使...
C 筆記 List 泛型
所屬命名空間 system.collections.generic list類是 arraylist 類的泛型等效類。該類使用大小可按需動態增加的陣列實現 ilist 泛型介面。泛型的好處 它為使用c 語言編寫物件導向程式增加了極大的效力和靈活性。不會強行對值型別進行裝箱和拆箱,或對引用型別進行,向...