C#学习之列表

来源:互联网 发布:linux 解包 编辑:程序博客网 时间:2024/05/19 19:31

.NET FrameWork 为动态列表提供了泛型类List<T>。这个类实现了IList、ICollection、IEnumerable、IList<T>、ICollection<T> 和IEnumerable<T>接口。

创建列表


调用默认的构造函数,就可以创建列表对象,在泛型类List<T>中,必须为声明为列表的值指定类型。元素添加到列表中后,列表的容量就会扩大为可接纳4个元素,如果添加了第5个元素,列表的大小就重新设置为包含8个元素,如果8个元素还不够,列表的大小重新设置为保函16个元素,每次都会将列表的容量重新设置为原来的2倍。
例如 var intList = new List<int >();
 var racers = new List<Racer>();
如果列表的容量改变了,整个集合就要重新分配到一个新的内存块中,使用Capacity属性可以设置和获取集合的容量。(intList.Capacity=20;)在重新分配内存时,是通过
创建一个新数组,Array.Copy()方法将旧数组中的元素复制到新数组中。

集合的初始值设定

还可以通过集合初始值设定项给集合赋值。集合初始值设定项的语法类似于数组的初始值的设定项,使用集合初始值设定项,可以在初始化集合时,在花括号中给集合赋值:
var intList = new List<int>(){1,2};
var stringList = new List<string>(){"one","two"};

添加元素

使用Add()方法可以给列表添加元素。例如
var intLIst = new List<int>();
intList.Add(1);
intList.Add(2);
这样列表中就添加两个值1和2。使用List<T>类的AddRange()方法,可以一次给集合添加多个元素。例如:
racers.AddRange(new Racer{
new Racer(14,"nike","lauda","Austria",25),
new Racer(21,"addias","prost","France",41)});

插入元素

使用Insert()方法可以在指定的位置插入元素:
racers.Insert(1,new Racer(6,"phil","Hill","USA",3));
使用InsertRange()提供了插入大量元素的功能,类似于前面的AddRange()方法。

访问元素

实现IList和IList<T>接口的所有类都提供了一个索引器,所以可以使用索引器,方法是通过传递元素号来访问元素。第一个元素的索引值是0。可以通过for循环来访问元素:
for(int i =0;i<racers.Count;i++)
{
Console.WriteLine(racers[i]);
}
同时还可以通过foreach语句,来遍历整个列表。
foreach(Racer racer in racers)
{
Console.WriteLine(racer.ToString());
}

删除元素

删除元素可以利用索引,也可以传递要删除的元素。利用索引删除元素的情况,可以使用RemoveAt()方法,例如:racers.RemoveAt(3);也可以直接将对象传递给Remove方法(),来删除这个元素,即racers.Remove(racer);如果要删除多个元素,可以使用RemoveRange()方法,当中包含两个参数,第一个参数指定了开始删除的元素索引,第二个参数指定了要删除元素的个数,例如:racers.RemoveRange(3,4);要从集合中删除所有元素,可以使用RemoveAll()的方法。
0 0