C# 数组的讲解(ArrayList 与List的区别)
// 数组 有序的同元素的 缺点长度是固定的 #region 类型数组 //第一种方式 string[] str = new string[] { "a", "b", "c" }; //第二种方式 string[] str1 = new string[3]; str1[0] = "a"; str1[1] = "b"; str1[2] = "c"; //第三种方式 string[] str2 = { "a", "b" ,"c"}; #endregion //对象数组(两种声明方式) Student s1 = new Student(); s1.Age = 34; s1.Name = "李四"; Student s2 = new Student(); s2.Age = 16; s2.Name = "wangwu"; //方法一 Student[] student = new Student[2]; student[0] = s1; student[1] = s2; //方法二 Student[] studentTest = new Student[] { new Student { Name="asd",Age=23}, new Student { Name="ew",Age=34} }; //ArrayList 有序的数组,元素是object, //优点:长度不固定,缺点:进行类型的隐式转换,耗费系统的资源 ArrayList ary = new ArrayList(); ary.Add("asdf"); ary.Add(23); ary.Add("asec"); for (int i = 0; i < ary.Count; i++) { Console.WriteLine(ary[i] +"的类型为:"+ ary[i].GetType()); } //根据元素移除,RemoveAt(index) 根据下标移除 ary.Remove(23); Console.WriteLine("-----------------------Hashtable----------------------------"); //Hashtable无需的数组,有键值对(键必须唯一),元素是object, //优点:长度不固定,缺点:进行类型的隐式转换,耗费系统的资源 Hashtable ht = new Hashtable(); ht.Add("a","值得"); ht.Add("b", "dec"); ht.Add("c", "cere"); //根据键移除元素 ht.Remove("a"); //遍历的key,获取对应的value值 foreach (var item in ht.Keys) { Console.WriteLine("key:"+item+",value:"+ht[item]); } //List 有序的数组,元素对象明确的类型,优点长度不固定,不需要进行类型转换,对ArrayList的升级 List<Student> lst = new List<Student>(); lst.Add(s1); lst.Add(s2); lst.Remove(s2); //Dictionary 无序的数组,对Hashtable的升级 Dictionary<string, Student> dic = new Dictionary<string, Student>(); dic.Add("da",s1); dic.Add("dw",s2); //第一种 foreach (var item in dic.Keys) { Console.WriteLine("key:" + item + ",value:" + dic[item].Name); } //第二种(推荐的) foreach (KeyValuePair<string, Student> item in dic) { Console.WriteLine("key:" + item.Key + ",value:" + item.Value.Name); } 综上所述:List 和 Dictionary 对 ArrayList 和 Hashtable 的升级。