概述
所谓泛型
,即通过参数化类型来实现在同一份代码上操作多种数据类型,可以使用多种数据类型初始化
,泛型编程是一种编程范式,它利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。
C#泛型赋予了代码更强的1:类型安全(强类型),2:更好的复用,3:更高的效率,4:更清晰的约束。
之前学习的一维数组是具有固定长度的数组集合
,而泛型集合List<T>
是动态数组
,是可变的
,长度不受限制
,是以2倍的速度扩容
。并且也是只能存储相同类型的数据。
这里主要学习的泛型集合是List<T>
,C#中还提供了其它的泛型集合,但使用最多的还是List集合。
集合可以理解为可以存储事物的容器,如:菜篮子,里面存放的是蔬菜等,数组也是集合、List也是集合,但List<T>更是泛型集合
。
泛型集合List
定义
List泛型集合是在System.Collections.Generic命名空间下的。我们新建的WebForm.aspx页面默认就添加了System.Collections.Generic命名空间。
有了System.Collections.Generic命名空间,我们就可以使用List集合了。
List定义的基本语法如下:
List<数据类型> 集合名称=new List<数据类型>();
T表示数据类型。
如:
//定义了可以存储int类型的List集合
//可以用来存储学生的年龄
List<int> intList = new List<int>();
//定义了可以存储string类型的List集合
//可以用来存储学生姓名
List<string> strList = new List<string>();
在定义List时,只需要知道要将什么类型的数据存在List集合中就可以了。例如:我要存储学生的姓名,则T就是string类型,如果要存储价格,则T就是double。
在定义List时指定的什么类型,则该集合只能存储该类型。也就是只能存储相同类型的数据。List是引用类型,可以存储任意类型的数据。
常用的方法
其实List集合只是微软定义好的类,其中还提供了许多的方法,我们只需要学会怎么使用就可以了:
Add() 向集合末尾增加元素(元素指的就是数据,)。
Insert(索引,值) 向集合指定的位置添加元素。第1个参数是下标值(也称为索引值,是从0开始的),第2个是需要插入的数据值。
Remove(值) 从集合中移除第一个匹配元素。
RemoveAt(索引)从集合中移除指定索引位置的元素。
RemoveRange(索引,长度)从集合中指定位置删除指定长度的元素。注意:删除的下标值和长度都不能超出范围,否则出错。
Clear()清空集合。
常用的属性
Count:获取集合中的元素个数,那么集合的最大下标值就是Count-1。
Capacity:获取集合中的元素容量。List<T>集合中的容量是以2倍的速度扩容的。默认是4。
特点
泛型的特点:
性能好:不需要装箱和拆箱操作。ArrayList是非泛型集合,添加数据时需要装箱。而List<T>是泛型集合,用来替换ArrayList集合的。
类型安全:在实例化List<T>时,需要指定数据类型,是强类型的。
代码重复度高:泛型可以定义一次,用许多不同的类型实例化。
遍历:即可以使用for循环,也可以使用foreach循环遍历集合中的数据。