List<T>是否始终保证项目将按照枚举时添加的顺序返回?

Updated:谢谢大家的回答,让我放心了.我用.NET Reflector快速浏览了List<T>个类(可能一开始就应该这么做),实际上底层存储是一个T(T[])array.

推荐答案

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

所以yes,你可以这样用safely...

List(T)类是泛型 相当于ArrayList类.它 实现IList(T)泛型 使用大小为 根据需要动态增加.

此集合中的元素可以是

不保证列表(T)是 整理好了.您必须对列表进行排序(T) 在执行操作(如 BinarySearch)需要列表(T) 待分类.

一个列表(T)可以支持多个读取器 同时,只要 未修改集合. 枚举集合是 本质上不是线程安全的 程序.在极少数情况下, 枚举与一个或多个 写访问,这是确保 线程安全是将 在整个过程中收集 枚举.要允许集合,请执行以下操作 要由多个线程访问 读和写,你必须 实现您自己的同步.

你可以在MSDN上了解更多.

.net相关问答推荐

Puppeteer LaunchAsync 在未打开浏览器的情况下挂起

有没有更好的方法使用 Pusher Channels 的批事件发布消息?

使用 PowerShell 从文件夹中获取文件名的最快\最好的方法是什么?

如何规范机器之间连字符的排序顺序?

图像 UriSource 和数据绑定

是否可以像 WebView 一样在 Windows 窗体中嵌入 Gecko 或 Webkit?

如何以编程方式判断类型是 struct 还是类?

使文本框不可编辑

将 Topshelf 应用程序安装为 Windows 服务

如何在 C# 中仅设置 DateTime 变量的时间部分

WCF反序列化如何在不调用构造函数的情况下实例化对象?

迭代器和枚举器的区别

C#中的引用类型

是否有可用的 WPF 备忘单?

使用+运算符的字符串连接

确定使用 ContextMenuStrip 的控件

如何将 MailMessage 对象作为 *.eml 或 *.msg 文件保存到磁盘

.NET 中的 java.lang.IllegalStateException?

我可以将构造函数参数传递给 Unity 的 Resolve() 方法吗?

作者主签名的时间戳发现了一个建链问题:UntrustedRoot: self-signed certificate in certificate chain