ArrayList:非泛型集合
List:泛型集合
集合跟数组比较我们更容易理解。数组:1,长度固定2,数据类型预先声明
集合:1,长度可变2,数据类型预先声明的为泛型集合,数据类型不限定为非泛型
ArrayList:长度不固定,元素数据类型为object的集合。
(object类之间或间接为所有类的父类,根据里氏转换,子类可以直接给父类赋值,所以如果此处要求我们的数据类型为object就等于任何类型的数据都可以储存,但实际上不管我们存入的数据为什么类型,它都被隐式转换成了object类型)。
List:长度不固定,元素数据类型需固定声明的集合。
ArrayList的命名空间为Collections,而List的命名空间为Collections.Generic
非泛型举例:static void Main(string[] args)
{
//声明一个非泛型集合List
ArrayList list = new ArrayList();
//一次添加元素 接入的元素类型可以是int类型,bool类型,string类型,char类型,数组类型
//这些类型都是object的子类型,根据里氏转换,存储进入集合后都隐式的转为了object类型
list.Add(1);
list.Add(true);
list.Add("张三");
list.Add('男');
list.AddRange(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 });
//遍历输出
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
Console.ReadKey();
}
泛型举例: static void Main(string[] args)
{
//声明一个泛型集合,尖括号内声明集合元素的类型,一旦声明就不能改变
List<int> list = new List<int>();
list.Add(1);
list.Add(2);
list.Add(3);
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
Console.ReadKey();
}
总结:不管是非泛型或者泛型集合,长度都是不固定的。泛型是指集合元素类型限定了,而非泛型集合元素类型为object类型,相当于任何类型都可以。
相比数组的长度不可变,类型固定,集合更好用