Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么时候人们更喜欢数组、LinkedList或ArrayList而不是List<;T>;?_C#_Arrays_List_Arraylist_Linked List - Fatal编程技术网

C# 什么时候人们更喜欢数组、LinkedList或ArrayList而不是List<;T>;?

C# 什么时候人们更喜欢数组、LinkedList或ArrayList而不是List<;T>;?,c#,arrays,list,arraylist,linked-list,C#,Arrays,List,Arraylist,Linked List,除了遗留代码之外,使用这些数据类型还有什么意义吗?使用字典或图形等其他数据类型是可以理解的,因为它们提供了额外/不同的功能。但array、LinkedList或ArrayList的功能较少,有时性能比List差(ArrayList在值类型中的内存效率较低) 那为什么要用它们呢 注意:这不是一个基于意见的问题。我只想知道这些类型的用例 另一个注意事项:我知道链表的O(1)插入时间。我在问什么时候应该在标准列表上使用它,标准列表有O(1)个访问时间? 什么时候使用更好?(关于ArrayList和ar

除了遗留代码之外,使用这些数据类型还有什么意义吗?使用字典或图形等其他数据类型是可以理解的,因为它们提供了额外/不同的功能。但array、LinkedList或ArrayList的功能较少,有时性能比List差(ArrayList在值类型中的内存效率较低)

那为什么要用它们呢

注意:这不是一个基于意见的问题。我只想知道这些类型的用例

另一个注意事项:我知道链表的O(1)插入时间。我在问什么时候应该在标准列表上使用它,标准列表有O(1)个访问时间?
什么时候使用更好?(关于ArrayList和array的问题仍然存在)

ArrayList
?当然:基本上永远不要使用它(除非你不想迁移一些遗留代码,或者因为有人不明智地使用了
BinaryFormatter
),所以不能迁移)

然而,
LinkedList
不属于同一类别-它是利基,但由于插入/删除等成本较低,因此有其用途,而不像
List
需要移动数据才能执行插入/删除。在大多数情况下,您可能不需要该功能,因此:除非您需要,否则不要使用它?

下面是与
列表
实现不同的一个列表。当列表中的项目需要维护特定的顺序(因此是下一个和上一个引用)时,可以使用它

表示双链接列表

LinkedList
提供了类型为
LinkedListNode
的独立节点,因此插入和删除是O(1)操作

您可以删除节点并将其重新插入同一列表或另一列表中,这样就不会在堆上分配额外的对象。由于列表还维护内部计数,因此获取count属性是一个O(1)操作

LinkedList
对象中的每个节点都属于
LinkedListNode
类型。由于
LinkedList
是双重链接的,因此每个节点都指向前一个节点,并向后指向前一个节点

ArrayList
是过去使用的一种不推荐使用的实现。更喜欢在任何新代码中列出通用实现

作为一个泛型集合,
List
实现了泛型
IEnumerable
接口,可以在LINQ中轻松使用

ArrayList
属于C#没有泛型的时代。它被弃用,取而代之的是
列表
。在针对.NET>=2.0的新代码中不应使用
ArrayList
,除非必须与使用它的旧API接口


数组是一个固定大小的集合,它支持多个维度。对于简单的插入和迭代,它是三种方法中效率最高的。

所有容器都有优点和缺点。。。。从复杂性O(n)到排序功能,您指的是哪个
List
?您无法实例化列表,因此没有列表。@Omid.N um。。。是的,您可以(实例化
列表
);它不是
抽象的
(你在考虑Java吗?注意这个问题有一个C#标记,所以我在这里说的是.NET)啊!对不起,我以为这是一个java问题。