泛型集合的由来和使用

泛型(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 list = new List();
list.Add(s1);
list.Add(s2);
list.Add(t1);  //此行代码编译出错,去掉此行代码,程序正常运行
foreach (Student item in list)
{
    Console.WriteLine(item.Name);
}

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

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

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

二、Dictionary泛型集合

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

Student s1 = new Student("001","刘备");
Student s2 = new Student("002", "公孙赞");
Dictionary list = new Dictionary();
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中所有键的ICollection (可以遍历该属性访问集合中所有键)
Values 获取包含Dictionary中所有值的ICollection (可以遍历该属性访问集合中所有值)
Count 获取Dictionary中键/值对的数目
方法名 功能说明
Add(object key, object value) 将带有指定键和值的元素添加到Dictionary
Remove() 从Dictionary中移除带有指定键的元素
Clear() 移除Dictionary中所有元素
ContainsKey() 确定Dictionary中是否包含指定键
ContainsValue() 确定Dictionary中是否包含指定值

你可能感兴趣的:(泛型集合的由来和使用)