Array,ArrayList和List之间有什么区别?

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

例:

排列
对于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 } 

数组列表
我们可以像数组一样添加值

 ArrayList arrayList = new ArrayList(); arrayList.Add(6); arrayList.Add(8); 

名单
我们可以像在数组中一样添加值

 List list = new List(); list.Add(6); List.Add(8); 

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

  • 你会在哪里使用一个?
  • 三者之间的确切差异function明智吗?

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

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

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

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