泛型:通过泛型可以定义类型安全的数据类型,它的最显著应用就是创建集合类,可以约束集合类内的元素类型。
比较典型的泛型集合是List<T>和Dictionary<k,v>。
一、泛型集合List<T>:
示例:
private void btnMyClassTest_Click(object sender, EventArgs e)
{
List<Student> students = new List<Student>();
Student scofield = new Student("Scofield", Genders.Male, 28, "越狱狱");
Student zhang = new Student("张靓靓", Genders.Female, 20, "唱歌歌");
Student jay = new Student("周杰杰", Genders.Male, 21, "耍双节棍棍");
Teacher jacky = new Teacher("成龙龙", 4);
#region 添加元素 演示
students.Add(scofield);
students.Add(zhang);
students.Add(jay);
//打印集合数目
MessageBox.Show(string.Format("共包括 {0} 个成员。",
students.Count.ToString()));
#endregion
#region 存取单个元素 演示
Student stu1 = students[2];
stu1.SayHi();
#endregion
#region 元素遍历 演示
foreach (Student stu in students)
{
Console.WriteLine(stu.Name);
}
#endregion
#region 删除元素 演示
//打印集合数目
MessageBox.Show(string.Format("共包括 {0} 个成员。",students.Count.ToString()));
students.RemoveAt(0);
}
二、泛型集合Dictionary<K,V>:编译时检查类型约束,获取元素时无须类型转换,通过Key/Value键/值对保存元素的。
<K,V>中的K表示集合中Key的类型,V表示Value的类型。
示例:
private void btnMyClassTest_Click(object sender, EventArgs e)
{
Dictionary<String, Student> students = new Dictionary<string, Student>();
Student scofield = new Student("Scofield", Genders.Male, 28, "越狱狱");
Student zhang = new Student("张靓靓", Genders.Female, 20, "唱歌歌");
Student jay = new Student("周杰杰", Genders.Male, 21, "耍双节棍棍");
#region 添加元素 演示
students.Add(scofield.Name, scofield);
students.Add(zhang.Name, zhang);
students.Add(jay.Name, jay);
//打印集合数目
MessageBox.Show(string.Format("共包括 {0} 个学员。",
students.Count.ToString()));
#endregion
#region 存取单个元素 演示
Student stu2 = students["周杰杰"];
stu2.SayHi();
#endregion
#region 元素遍历 演示
foreach (Student student in students.Values)
{
Console.WriteLine(student.Name);
}
#endregion
#region 删除元素 演示
//打印集合数目
MessageBox.Show(string.Format("共包括 {0} 个学员。",students.Count.ToString()));
students.Remove("周杰杰");
//打印集合数目
MessageBox.Show(string.Format("共包括 {0} 个学员。",students.Count.ToString()));
#endregion
}
注意:引入命名空间System.Collections.Generic;
泛型接口也比较重要
小结:数据批量处理方式 :
A、数组容量相对固定(指最大最小不超过两倍),用下标来取元素,
不要求其他更有意义的下标来取数据。
B、List<T>容量可变,可排序。
C、Dictionary<K,V>允许有意义的数据类型作下标。
泛型集合
①C#中使用泛型的优点和使用
优点:
a.类型安全:使用泛型集合编译器会在编译期间检查要放入集合对象的数据类型,如果发现不是某种特定的类型就会报错,这样就可以避免发生许多运行时错误,即类型安全。
b.提高性能:由于明确了数据类型,所以在存取数据不会发生类型的转换,特别是存取值类型是不会发生装箱和拆箱操作。
c.使用泛型类型可以最大限度地重用代码
使用:
a.泛型最常见的用途是创建集合类。
b.可以对泛型类进行约束以访问特定数据类型的方法。
c.可以创建自己的泛型接口、泛型类、泛型方法、泛型事件和泛型委托。
d.关于泛型数据类型中使用的类型的信息可在运行时通过反射获取。
②、System.Collections.Generic命名空间
泛型集合类 描述
List 一般用于替代ArrayList类,与ArrayList很相似
Dictionary 存储键值对的集合泛型类
SortedList 类似于Dictionary,但按键自动排序
LinkedList 双向链表
Queue 先进先出的队列类
Stack 后进先出的堆栈类