zoukankan      html  css  js  c++  java
  • 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>();

            }
        }

    泛型的用法还有很多种,如泛型方法,泛型委托,泛型接口等。

  • 相关阅读:
    高级特性(4)- 数据库编程
    UVA Jin Ge Jin Qu hao 12563
    UVA 116 Unidirectional TSP
    HDU 2224 The shortest path
    poj 2677 Tour
    【算法学习】双调欧几里得旅行商问题(动态规划)
    南洋理工大学 ACM 在线评测系统 矩形嵌套
    UVA The Tower of Babylon
    uva A Spy in the Metro(洛谷 P2583 地铁间谍)
    洛谷 P1095 守望者的逃离
  • 原文地址:https://www.cnblogs.com/dudu837/p/1530018.html
Copyright © 2011-2022 走看看