C#泛型集合 图片看不了?点击切换HTTP 返回上层
C# 语言中泛型集合是泛型中最常见的应用,主要用于约束集合中存放的元素。
由于在集合中能存放任意类型的值,在取值时经常会遇到数据类型转换异常的情况,因此推荐在定义集合时使用泛型集合。
前面《C# ArrayList》与《C# Hashtable》中已经介绍了非泛型集合中的 ArrayList、Hashtable。
非泛型集合中的 ArrayList、Hashtable 在泛型集合中分别使用 List<T> 和 Dictionary<K,V> 来表示,其他泛型集合均与非泛型集合一致。
下面以 List<T> 和 Dictionary<K,V> 为例介绍泛型集合的使用。
【实例 1】使用泛型集合 List<T> 实现对学生信息的添加和遍历。
根据题目要求,将学生信息定义为一个类,并在该类中定义学号、姓名、年龄属性。
在泛型集合 List<T> 中添加学生信息类的对象,并遍历该集合。实现的代码如下。
执行上面的代码,效果如下图所示。
从上面的执行效果可以看出,在该泛型集合中存放的是 Student 类的对象,当从集合中取岀元素时并不需要将集合中元素的类型转换为 Student 类的类型,而是直接遍历集合中的元素即可,这也是泛型集合的一个特点。
【实例 2】使用泛型集合 Dictionary<K,V> 实现学生信息的添加,并能够按照学号查询学生信息。
根据题目要求,将在实例 1 中所创建学生信息类的对象作为 Dictionary<K,V> 集合中的 value 值部分,key 值部分使用学生信息类中的学号,这样能很容易地通过学号查询学生的信息。实现的代码如下。
执行上面的代码,效果如下图所示。
从上面的执行效果可以看出,根据输入的学号直接从 Dictionary<int,Student> 泛型集合中查询出所对应的学生信息,并且在输出学生信息时不需要进行类型转换,直接输出其对应的 Student 类的对象值即可。
由于在集合中能存放任意类型的值,在取值时经常会遇到数据类型转换异常的情况,因此推荐在定义集合时使用泛型集合。
前面《C# ArrayList》与《C# Hashtable》中已经介绍了非泛型集合中的 ArrayList、Hashtable。
非泛型集合中的 ArrayList、Hashtable 在泛型集合中分别使用 List<T> 和 Dictionary<K,V> 来表示,其他泛型集合均与非泛型集合一致。
下面以 List<T> 和 Dictionary<K,V> 为例介绍泛型集合的使用。
【实例 1】使用泛型集合 List<T> 实现对学生信息的添加和遍历。
根据题目要求,将学生信息定义为一个类,并在该类中定义学号、姓名、年龄属性。
在泛型集合 List<T> 中添加学生信息类的对象,并遍历该集合。实现的代码如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | class Program { static void Main(string[] args) { //定义泛型集合 List<Student> list = new List<Student>(); //向集合中存入3名学员 list. Add (new Student(1, "小明" , 20)); list. Add (new Student(2, "小李" , 21)); list. Add (new Student(3, "小赵" , 22)); //遍历集合中的元素 foreach(Student stu in list) { Console.WriteLine(stu); } } } class Student { //提供有参构造方法,为属性赋值 public Student( int id,string name , int age) { this.id = id; this. name = name ; this.age = age; } //学号 public int id { get; set ; } //姓名 public string name { get; set ; } //年龄 public int age { get; set ; } //重写ToString 方法 public override string ToString() { return id + ":" + name + ":" + age; } } |

从上面的执行效果可以看出,在该泛型集合中存放的是 Student 类的对象,当从集合中取岀元素时并不需要将集合中元素的类型转换为 Student 类的类型,而是直接遍历集合中的元素即可,这也是泛型集合的一个特点。
【实例 2】使用泛型集合 Dictionary<K,V> 实现学生信息的添加,并能够按照学号查询学生信息。
根据题目要求,将在实例 1 中所创建学生信息类的对象作为 Dictionary<K,V> 集合中的 value 值部分,key 值部分使用学生信息类中的学号,这样能很容易地通过学号查询学生的信息。实现的代码如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | class Program { static void Main(string[] args) { Dictionary< int , Student> dictionary = new Dictionary< int , Student>(); Student stu1 = new Student(1, "小明" , 20); Student stu2 = new Student(2, "小李" , 21); Student stu3 = new Student(3, "小赵" , 22); dictionary. Add (stu1.id, stu1); dictionary. Add (stu2.id, stu2); dictionary. Add (stu3.id, stu3); Console.WriteLine( "请输入学号:" ); int id = int .Parse(Console.ReadLine()); if (dictionary.ContainsKey(id)) { Console.WriteLine( "学生信息为:{0}" , dictionary[id]); } else { Console.WriteLine( "您查找的学号不存在!" ); } } } |

从上面的执行效果可以看出,根据输入的学号直接从 Dictionary<int,Student> 泛型集合中查询出所对应的学生信息,并且在输出学生信息时不需要进行类型转换,直接输出其对应的 Student 类的对象值即可。