List <T>是否保证项目将按照他们添加的顺序返回?
List<T>
是否总是保证项目将按枚举时添加的顺序返回?
更新 :谢谢所有答案的人,让我放心。 我用.NET Reflector(应该可能已经做到了这一点),并且实际上底层存储是一个T
( T[]
)的数组。
该列表是基于索引的,并且新项目将总是被添加到列表的末尾。 您可以插入项目在一个特定的索引,所以下一个项目将移动一个位置。
所以是的 ,你可以这样安全地使用它…
List(T)类是ArrayList类的通用等效物。 它使用大小根据需要dynamic增加的数组实现IList(T)通用接口。
可以使用整数索引访问此集合中的元素。 这个集合中的索引是从零开始的。
列表(T)不保证sorting。 在执行需要对List(T)进行sorting的操作(如BinarySearch)之前,必须对List(T)进行sorting。
列表(T)可以同时支持多个阅读器,只要该集合没有被修改。 枚举枚举本质上不是一个线程安全的过程。 在枚举与一个或多个写入访问竞争的罕见情况下,确保线程安全的唯一方法是在整个枚举期间locking集合。 为了让集合可以被多个线程读取和写入,您必须实现自己的同步。
你可以在MSDN上阅读更多关于它的信息。
是的, List<T>
保证了插入顺序和检索顺序 ,这是logging在MSDN(下面强调是我的)。
插入
List<T>.Add
方法
将一个对象添加到
List<T>
的末尾 。
项目参数是:
要添加到
List<T>
结尾的对象。
List<T>.AddRange
方法
将指定集合的元素添加到
List<T>
的末尾 。
收集参数是:
其元素应添加到
List<T>
的末尾的集合。
恢复
List<T>.Enumerator
结构
最初,枚举器位于集合中的第一个元素之前。 在这个位置,
Current
是不确定的。 因此,在读取Current
值之前,必须调用MoveNext
将枚举器推进到集合的第一个元素 。
Current
直到MoveNext
返回相同的对象。 MoveNext
将Current
设置为下一个元素 。
是。 但这不是规范的一部分。
Ref: List Class
是根据这个MSDN论坛主题