是否List<T>
始终保证项目将按枚举时添加的顺序返回?
更新:谢谢大家的回答,请放心。我List<T>
使用.NET Reflector快速浏览了该类(应该首先应该这样做),而实际上底层存储是T
(T[]
)数组。
是否List<T>
始终保证项目将按枚举时添加的顺序返回?
更新:谢谢大家的回答,请放心。我List<T>
使用.NET Reflector快速浏览了该类(应该首先应该这样做),而实际上底层存储是T
(T[]
)数组。
Answers:
该列表基于索引,新项目将始终添加到列表的末尾。您可以在某个索引处插入项目,以便下一个项目移动一个位置。
所以,是的,你可以使用它安全地这样...
List(T)类是ArrayList类的通用等效项。它使用数组实现IList(T)通用接口,该数组的大小根据需要动态增加。
可以使用整数索引访问此集合中的元素。此集合中的索引从零开始。
不保证对List(T)进行排序。您必须先对List(T)进行排序,然后再执行需要对List(T)进行排序的操作(例如BinarySearch)。
只要不修改集合,List(T)就可以同时支持多个阅读器。通过集合进行枚举本质上不是线程安全的过程。在极少数情况下,枚举与一个或多个写访问竞争,确保线程安全的唯一方法是在整个枚举期间锁定集合。要允许多个线程访问该集合以进行读写,您必须实现自己的同步。
您可以在MSDN上阅读有关它的更多信息。
does AddRange()
保留传递给它的元素的顺序,还是可以随意将其添加到内部数组的顺序随意修改?(显然,它们都将位于当前列表的末尾)