美文网首页
18-泛型集合

18-泛型集合

作者: D丝学编程 | 来源:发表于2021-04-11 18:18 被阅读0次

    泛型(Generic) 允许您延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程序中使用它的时候。换句话说,泛型允许您编写一个可以与任何数据类型一起工作的类或方法。

    泛型最常见的用途是创建集合类。

    普通集合在使用用出现的问题:

    class Teacher  //教师
    {
        public Teacher(string name,double salary)
        {
            this.Name = name;
            this.Salary = salary;
        }
        public string Name { get; set; }   //姓名
        public double Salary { get; set; }  //工资
    }
    
    class Student   //学生
    {
        public Student(string no,string name)
        {
            this.No = no;
            this.Name = name;
        }
        public string No { get; set; }  //学号
        public string Name { get; set; } //姓名
    }
    
    Student s1 = new Student("001","刘备");
    Student s2 = new Student("002", "公孙赞");
    Teacher t1 = new Teacher("卢值", 5000);
    ArrayList list = new ArrayList();
    list.Add(s1);
    list.Add(s2);
    list.Add(t1);
    
    //集合元素的数据类型没有要求一致,所以下面的程序会因为类型的原因报错
    foreach (Student item in list)
    {
        Console.WriteLine(item.Name);
    }
    

    上述程序的foreach循环中会产生执行中错误,原因是集合中第三个对象不是Student对象,此处类型会出异常,由此我们得出:

    (1)ArrayList类型不安全性,因为里面什么类型都可以存放。

    (2)而泛型集合定义时必须指定集合中存储数据的类型,正好解决了类型安全问题。

    一、List泛型集合

    List泛型集合使用方法和ArrayList集合类似,如下:

    Student s1 = new Student("001","刘备");
    Student s2 = new Student("002", "公孙赞");
    Teacher t1 = new Teacher("卢值", 5000);
    List<Student> list = new List<Student>();
    list.Add(s1);
    list.Add(s2);
    list.Add(t1);  //此行代码编译出错,去掉此行代码,程序正常运行
    foreach (Student item in list)
    {
        Console.WriteLine(item.Name);
    }
    

    上述代码在添加集合元素的时候就会编译出错,保证的类型的安全。

    List泛型集合常用属性和方法如下:

    属性名 功能说明
    Capacity 获取或设置List<T>可包含的元素个数
    Count 获取List<T>实际包含的元素个数
    方法名 功能说明
    Add() 将元素添加到List<T>结尾处
    Insert() 将元素添加到List<T>的指定索引处
    Remove() 移除List<T>指定的元素
    RemoveAt() 移除List<T>指定索引处元素
    Clear() 清除List<T>中所有元素
    Sort() 对List<T>中的元素排序
    Reverse() 将List<T>中的元素顺序反转
    ToArray() 将List<T>中的元素复制到数组中

    二、Dictionary泛型集合

    Dictionary泛型集合使用方法和HashTable集合类似,并且Dictionary泛型集合和List泛型集合一样,都是类型安全的,如下:

    Student s1 = new Student("001","刘备");
    Student s2 = new Student("002", "公孙赞");
    Dictionary<string, Student> list = new Dictionary<string, Student>();
    list.Add(s1.No, s1);
    list.Add(s2.No, s2);
    Console.WriteLine("显示所有人员信息:");
    foreach (Student stu in list.Values)
    {
        Console.Write(stu.Name+"  ");
    }
    

    Dictionary泛型集合常用属性和方法如下:

    属性名 功能说明
    Keys 获取包含Dictionary<K,V>中所有键的ICollection (可以遍历该属性访问集合中所有键)
    Values 获取包含Dictionary<K,V>中所有值的ICollection (可以遍历该属性访问集合中所有值)
    Count 获取Dictionary<K,V>中键/值对的数目
    方法名 功能说明
    Add(object key, object value) 将带有指定键和值的元素添加到Dictionary<K,V>中
    Remove() 从Dictionary<K,V>中移除带有指定键的元素
    Clear() 移除Dictionary<K,V>中所有元素
    ContainsKey() 确定Dictionary<K,V>中是否包含指定键
    ContainsValue() 确定Dictionary<K,V>中是否包含指定值

    相关文章

      网友评论

          本文标题:18-泛型集合

          本文链接:https://www.haomeiwen.com/subject/apzlxltx.html