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);
}