首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >List<T>是否保证项目将按添加的顺序返回?

List<T>是否保证项目将按添加的顺序返回?
EN

Stack Overflow用户
提问于 2009-01-17 08:48:05
回答 4查看 21.2K关注 0票数 87

List<T>是否总是保证项在枚举时按添加顺序返回?

更新了:感谢大家的回答,让我放心了。我用.NET反射器快速浏览了一下List<T>类(可能一开始就应该这样做),实际上底层存储是一个T (T[])数组。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-01-17 09:04:37

该列表是基于索引的,并且新项目将始终添加到列表的末尾。您可以在某个索引处插入项目,以便下一个项目将移动一个位置。

所以,是的,,你可以这样安全地使用它……

List(T)类是ArrayList类的泛型等价物。它使用一个数组实现IList(T)泛型接口,该数组的大小可以根据需要动态增加。

可以使用整数索引访问此集合中的元素。此集合中的索引是从零开始的。

不保证对列表(T)进行排序。在执行需要对列表(T)进行排序的操作(如BinarySearch)之前,必须对列表(T)进行排序。

只要集合未被修改,列表(T)就可以同时支持多个读取器。枚举集合本质上不是线程安全的过程。在枚举与一个或多个写访问冲突的极少数情况下,确保线程安全的唯一方法是在整个枚举期间锁定集合。若要允许多个线程访问集合以进行读写,您必须实现自己的同步。

你可以在MSDN上阅读更多关于它的内容。

票数 70
EN

Stack Overflow用户

发布于 2014-05-15 11:04:29

是的,List保证既有插入顺序也有检索顺序,这在MSDN上有说明(下面强调的是我的)。

插入

将一个对象添加到 的端。

Item参数为:

要添加到端的对象。

将指定集合的元素添加到端。

采集参数为:

应将其元素添加到端的集合。

检索

最初,枚举数位于集合中第一个元素之前。在此位置,Current是未定义的。因此,在读取的值之前,必须调用MoveNext将枚举数前进到集合的第一个元素Current

在调用MoveNext之前,Current将返回相同的对象。MoveNextCurrent设置为下一个元素。

票数 11
EN

Stack Overflow用户

发布于 2009-01-17 08:58:02

是。但这不是规范的一部分。

参考:List Class

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/453006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档