1. 数组 引用的命名空间是 using System;数组
2. 其在内存中是连续存储的,因此它的索引速度很是快,并且赋值与修改元素的值也很简单。安全
//数组 string[] s=new string[2]; //赋值 s[0]="a"; s[1]="b"; //修改 s[1]="a1";
在数组中的两个数据间插入数据很麻烦,且在声明数组的时候必须指定数组的长度,数组的长度过长,会形成内存浪费,太短会形成数据溢出的错误。性能
Array 就是 数组 的基类,其引用的命名空间是 using System。spa
ArrayList 引用的命名空间是 System.Collections。code
1. 其在内存中存储的数据来动态扩充与收缩的,因此,在声明ArrayList对象时并不须要指定它的长度;对象
2. 在 ArrayList 中存储的是对象 object,故使用该类时必须进行引用,且容许插入不一样类型的数据;继承
3. 同时继承了IList接口,提供了数据存储和检索等方法。索引
// 声明 ArrayList ArrayList arrayList1 = new ArrayList(); //新增数据 arrayList1.Add("cde"); arrayList1.Add(5678); //修改数据 arrayList1[2] = 34; //移除数据 arrayList1.RemoveAt(0); //插入数据 arrayList1.Insert(0, "qwe");
ArrayList 将其中的数据看成为object类型来处理,在进行数据增删改时,可能会因类型不匹配致使报错,也就是ArrayList不是类型安全的。在存储或检索值类型时因须要进行装箱和拆箱操做,致使性能耗损。接口
装箱:简单地说——将值类型的数据打包到引用类型的实例中:内存
// 装箱 示例 string s=”abc”; object obj=(object)s;
拆箱:简单地说——从引用数据中提取值:
// 拆箱 示例 object obj=”abc”; string i=(string)obj;
1. List 引用的命名空间是 using System.Collections.Generic;
2. List 类是 ArrayList 类的泛型等效类,其大部分用法与 ArrayList 类似,由于 List 也继承了 IList 接口;
3. 因为 List 须要事先声明集合内数据类型,所以其避免了装箱与拆箱动做,保证了性能的高效。
//声明 myList 为 List 泛型,并指定为 string 数据类型 List<string> myList = new List<string>(); //新增数据 myList.Add(“abc”); //修改数据 myList[0] = “def”; //移除数据 myList.RemoveAt(0);