【问题标题】:What is the difference between an Array, ArrayList and a List? [duplicate]Array、ArrayList 和 List 有什么区别? [复制]
【发布时间】:2015-11-08 07:06:48
【问题描述】:

我想知道 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
}

数组列表
我们可以像 Array

一样添加值
ArrayList arrayList = new ArrayList();
arrayList.Add(6);
arrayList.Add(8);

列表
同样,我们可以像在 Array

中一样添加值
List<int> list = new List<int>();
list.Add(6);
List.Add(8);

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

  • 你会在哪里使用一个而不是另一个?
  • 这三者之间在功能方面的确切区别?

【问题讨论】:

标签: c# arrays list arraylist


【解决方案1】:

它们是不同的对象类型。它们具有不同的功能并以不同的方式存储数据。

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

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

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

【讨论】:

  • 完美答案!
  • ArrayList 扩展了 AbstractList 并实现了 List 接口。或者它是其他一些列表的意思?
  • @Yan 那是 Java。这个问题是关于c#
  • @JohnWu,哦,我明白了,我的错误,对不起。
猜你喜欢
  • 2013-01-31
  • 2014-07-22
  • 2017-05-08
  • 2011-07-20
  • 2019-03-15
  • 1970-01-01
  • 2019-02-05
  • 1970-01-01
相关资源
最近更新 更多