Array,ArrayList和List有什么区别?

kCC*_*kCC 28 c# arrays list arraylist

我想知道Array,ArrayListList之间的确切区别是什么(因为它们都有类似的概念)以及在哪里使用一个而不是另一个.

示例:

Array
对于Array,我们只能添加我们为此示例声明的类型int.

int[] Array = new Int[5]; //Instansiation of an array
for(int i = 0; i < Array.Length; i++)
{
   Array[i] = i + 5; //Add values to each array index
}
Run Code Online (Sandbox Code Playgroud)

ArrayList
我们可以像Array一样添加值

ArrayList arrayList = new ArrayList();
arrayList.Add(6);
arrayList.Add(8);
Run Code Online (Sandbox Code Playgroud)

List
再次我们可以像在Array中一样添加值

List<int> list = new List<int>();
list.Add(6);
List.Add(8);
Run Code Online (Sandbox Code Playgroud)

我知道在List中你可以拥有泛型类型所以你可以传入任何你不能在数组中做的类型,但我的确切问题是:

  • 你会在哪里使用一个?
  • 这三者之间的确切差异功能是什么?

Joh*_* Wu 57

它们是不同的对象类型.它们具有不同的功能,并以不同的方式存储数据.您也可以问一下十进制和DateTime之间的区别.

System.Array一旦分配,Array()的大小就会固定.您无法向其添加项目或从中删除项目.此外,所有元素必须是相同的类型.因此,它是类型安全的,并且在内存和性能方面也是三者中最有效的.此外,System.Array支持多个维度(即它具有Rank属性),而List和ArrayList不支持(尽管您可以创建列表列表或ArrayLists的ArrayList,如果您愿意).

An ArrayList是一个包含对象列表的灵活数组.您可以添加和删除项目,它会自动处理分配空间.如果您在其中存储值类型,则将它们装箱并取消装箱,这可能效率低下.此外,它不是类型安全的.

A List<>利用泛型; 它本质上是ArrayList的类型安全版本.这意味着没有装箱或拆箱(这会提高性能),如果您尝试添加错误类型的项目,它将生成编译时错误.