1、数组
数组在内存上连续分配的,而且数组中元素类型是一样的可以下标访问,数据读取快但增删慢,长度不变。
例如,
Console.WriteLine("***************Array******************"); int[] intArray = new int[3]; intArray[0] = 2020; string[] strArray = new string[] { "C/C++", "C#", "Java","Python" };//Array for( int i=0;i<strArray.Length;i++) { Console.WriteLine(strArray[i]); } foreach(var item in strArray) { Console.WriteLine("item = "+item); }
2、ArrayList
ArrayList
是不定长的,内存上是连续分配的,其中元素没有类型限制,任何元素都是当成object
处理,如果是值类型,会有装箱操作。数据读取快但增删慢。
例如,
Console.WriteLine("***************ArrayList******************"); ArrayList arrayList = new ArrayList(); arrayList.Add("cjavapy"); arrayList.Add("c#"); arrayList.Add("c/++"); arrayList.Add("java"); arrayList.Add("python"); arrayList.Add(2022);//add增加长度 //arrayList[4] = 26;//修改数据,不会增加长度 //删除数据 //arrayList.RemoveAt(4); var value = arrayList[2]; arrayList.RemoveAt(0); arrayList.Remove("c#"); for( int i=0;i<arrayList.Count;i++) { Console.WriteLine(arrayList[i]); } foreach(var item in arrayList) { Console.WriteLine("item = "+item); }
3、List<T>
List<T>
也是Array
,内存上都是连续摆放不定长;泛型使用保证类型安全,可以避免装箱拆箱,数据读取快但增删慢。
例如,
Console.WriteLine("***************List<T>******************"); List<int> intList = new List<int>() { 1, 2, 3, 4 }; intList.Add(2022); intList.Add(1314); //intList.Add("22"); //intList[0] = 11; List<string> stringList = new List<string>(); //stringList[0] = "c#";//不能这样新增 for( int i=0;i<intList.Count;i++) { Console.WriteLine(intList[i]); } foreach (var item in intList) { Console.WriteLine("item = "+item); }