C#2.0泛型-Dictionary,List的用法
泛型最常見的用途是創建集合類。
.NET?Framework?類庫在?System.Collections.Generic?命名空間中包含幾個新的泛型集合類。應盡可能地使用這些類來代替普通的類,如?System.Collections?命名空間中的?ArrayList,HashTable等。
下面我們就來說下,幾個泛型集合類的用法:
一.Dictionary?
此類在?.NET?Framework?2.0?版中是新增的。表示鍵和值的集合。命名空間:System.Collections.Generic,程序集:mscorlib(在?mscorlib.dll?中)
????class?TestGenericList
????{
?????????static?void?Main()
????????{
?//聲明對象,參數表示,鍵是int類型,值是string類型
????????????Dictionary<int,?string>?fruit?=?new?Dictionary<int,?string>();
????????????try{
?????????????//加入重復鍵會引發異常
????????????????fruit.Add(1,?\"蘋果\");
????????????????fruit.Add(2,?\"桔子\");
????????????????fruit.Add(3,?\"香蕉\");
????????????????fruit.Add(4,?\"菠蘿\");?????????????
??//參數錯誤將引發異常,如下所示
??//fruit.Add(\"5\",?\"aa\");
????????????}
????????????catch?(ArgumentException)
????????????{
????????????????Console.WriteLine(\"添加錯誤!!!\");
????????????}
?//因為引入了泛型,所以鍵取出后不需要進行Object到int的轉換,值的集合也一樣
????????????foreach?(int?i?in?fruit.Keys)
????????????{
????????????????Console.WriteLine(\"鍵是:{0}??值是:{1}\",i,fruit); [Page]
????????????}
??????//刪除指定鍵,值
????????????fruit.Remove(1);
?????????????//判斷是否包含指定鍵
????????????if?(fruit.ContainsKey(1))
????????????{
????????????????Console.WriteLine(\"包含此鍵\");
????????????}
????????????//清除集合中所有對象
????????????fruit.Clear();
????????}
????}
Dictionary遍歷輸出的順序,就是加入的順序,這點與Hashtable不同,其它方法如:ContainsKey?,ContainsValue?,Remove?等,使用方法基本一致。
二、List類
注意:此類在?.NET?Framework?2.0?版中是新增的。表示可通過索引訪問的對象的強類型列表。提供用于對列表進行搜索、排序和操作的方法。命名空間:System.Collections.Generic,程序集:mscorlib(在?mscorlib.dll?中),List?類是?ArrayList?類的泛型等效類。
???//聲明一個泛型類???
????class?TestGenericList
????{
????????static?void?Main()
????????{
????????????//聲明一個List對象,只加入string參數
????????????List<string>?names?=?new?List<string>();
????????????names.Add(\"喬峰\");
????????????names.Add(\"歐陽峰\");
????????????names.Add(\"馬蜂\");
????????????//遍歷List
????????????foreach?(string?name?in?names)
????????????{
????????????????Console.WriteLine(name); [Page]
????????????}
????????????//向List中插入元素
????????????names.Insert(2,?\"張三峰\");
????????????//移除指定元素
????????????names.Remove(\"馬蜂\");????????????
????????}
????}
在決定使用?List?還是使用?ArrayList?類(兩者具有類似的功能)時,記住?List?類在大多數情況下執行得更好并且是類型安全的。如果對?List?類的類型?T?使用引用類型,則兩個類的行為是完全相同的。但是,如果對類型?T?使用值類型,則需要考慮實現和裝箱問題。
如果對類型?T?使用值類型,則編譯器將特別針對該值類型生成?List?類的實現。這意味著不必對?List?對象的列表元素進行裝箱就可以使用該元素,并且在創建大約?500?個列表元素之后,不對列表元素裝箱所節省的內存將大于生成該類實現所使用的內存,中國自學編程網,www.zxbc.cn 。?
其實我們也可以自己定義一個泛型類,如下所示:
???//聲明一個泛型類
????public?class?ItemList<T>
????{
????????void?Add(T?item)?{?}
????}
????class?TestGenericList
????{
????????private?class?ExampleClass?{?}
????????static?void?Main()
????????{
????????????//?聲明一個對象,只能加入int型
????????????ItemList<int>?list1?=?new?ItemList<int>();
????????????//聲明一個對象,只能加入Student類型,Student類為自定義類
????????????ItemList<Student>?list2?=?new?ItemList<Student>();
????????}
????}
泛型的用法還有很多種,如泛型方法,泛型委托,泛型接口等。
轉載于:https://www.cnblogs.com/dudu837/archive/2009/07/24/1530018.html
總結
以上是生活随笔為你收集整理的C#2.0泛型-Dictionary,List的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动态改变select 宽度
- 下一篇: 在程序中设置最小化、最大化、关闭按钮