C# 的每个循环按什么顺序迭代 List

2024-04-02

我想知道 C# 中的 foreach 循环循环的顺序System.Collections.Generic.List<T> object.

I found 另一个问题 https://stackoverflow.com/questions/678162/sort-order-when-using-foreach-on-an-array-list-etc关于同一主题,但我觉得它不能令我满意地回答我的问题。

有人说没有定义顺序。但正如其他人所说,它遍历数组的顺序是固定的(从 0 到 Length-1)。8.8.4 foreach 语句 http://msdn.microsoft.com/en-us/library/aa664754(VS.71).aspx

也有人说,这同样适用于任何有订单的标准类别(例如List<T>)。我找不到任何文档来支持这一点。因此,据我所知,它现在可能会像这样工作,但也许在下一个 .NET 版本中它会有所不同(尽管这可能不太可能)。

我也看过List(t).Enumerator http://msdn.microsoft.com/en-us/library/x854yt9s.aspx没有运气的文档。

另一个相关问题 https://stackoverflow.com/questions/1376934/java-for-each-loop-sort-order声明对于Java,文档中特别提到:

List.iterator()返回此列表中元素的迭代器 按正确的顺序。”

我正在 C# 文档中寻找类似的内容。

提前致谢。

编辑:谢谢大家的所有回答(令人惊讶的是我这么快就收到了这么多回复)。我从所有答案中了解到的是List<T>总是按照其索引的顺序进行迭代。但我仍然希望看到明确的文档说明这一点,类似于Java 文档上List http://java.sun.com/javase/6/docs/api/java/util/List.html#iterator().


基本上这取决于IEnumerator实施 - 但对于List<T>它始终按照列表的自然顺序排列,即与索引器的顺序相同:list[0], list[1], list[2] etc.

我不相信它有明确的记录 - 至少,我还没有找到这样的文档 - 但我认为你可以将其视为保证。对该顺序的任何更改都会毫无意义地破坏各种代码。事实上,我会惊讶地看到任何实施IList<T>这违反了这一点。诚然,很高兴看到它被专门记录......

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 的每个循环按什么顺序迭代 List? 的相关文章

随机推荐

  • 内存泄漏 - UIImagePNGRepresentation

    我正在尝试复制图像UIImagePicker到文档目录 我在用 UIImagePickerControllerOriginalImage key 从 UIImagePickerDelegate 的字典中获取原始图像 我正在使用将图像写入文件
  • 为什么我必须将内存地址转换为 (void *)? [复制]

    这个问题在这里已经有答案了 所以我现在只学习了 C 语言大约 3 周 我正在使用this https www youtube com watch v 5BpYD7TxvKU教程帮助我理解指针 我写的一切都和他一样 但我使用 Putty 和
  • 应用程序关闭时访问持久存储

    目前 我正在使用 redux persist 在本地存储数据 我想在应用程序关闭时访问 Persited 商店 就像有新的推送通知时一样 我尝试使用 AsyncStorage 访问存储 结果返回 null if AppState curre
  • 由于环境设置错误,使用 Keras 进行预测失败

    我无法让 Keras 预测任何事情 即使在这个简约的模型中也不行 from keras models import Sequential from keras layers import Dense import numpy as np i
  • 如何修复Python中的selenium“DevToolsActivePort文件不存在”异常[重复]

    这个问题在这里已经有答案了 SOLVED 当我使用两个参数时 headless and user data dir 硒提高selenium common exceptions WebDriverException Message unkno
  • webpack 4.1.1 -> configuration.module 有一个未知的属性“loaders”。

    我刚刚将 webpack 更新为4 1 1当我尝试运行它时 出现以下错误 配置对象无效 Webpack 已使用初始化 配置对象与 API 架构不匹配 configuration module 有一个未知的属性 loaders 这些属性是有效
  • 无法登录 ActiveAdmin

    我在登录 ActiveAdmin 时遇到问题 使用来自的解决方案无法登录活动管理 有什么办法可以创建管理员用户吗 https stackoverflow com questions 20447006 cant log into active
  • 不使用 javascript 设置输入控件焦点[重复]

    这个问题在这里已经有答案了 有没有一种方法可以在不使用 JavaScript 的情况下在特定的 HTML 输入 实际上是文本区域控件 中设置焦点 编辑 在 HTML5 中是可能的 但问题是关于 HTML 您可以使用自动对焦 http www
  • Django MySQL 按天与时区分组

    假设我有一个销售模型 class Sale models Model total models DecimalField max digits 8 decimal places 2 default 0 sale date models Da
  • 如何阻止 PyCharm 填充文档字符串?

    如果我使用三引号将文档字符串添加到方法中 只要我在三引号后键入空格 PyCharm 就会使用该方法采用的参数和返回值填充文档字符串 如下所示 def fill blank self direction param direction ret
  • 如何在“pytest”框架中的固定装置中的“拆卸”中使用测试结果

    我正在尝试使用测试结果或状态来拆卸夹具 但是如果不使用 pytest 框架中的关键字 yield 我将无法找到代码 import pytest import requests pytest fixture def update result
  • TensorFlow Custom Estimator - 在 model_fn 发生微小变化后恢复模型

    我在用tf estimator Estimator为了开发我的模型 我写了一个model fn并训练了 50 000 次迭代 现在我想对我的model fn 例如添加一个新层 我不想从头开始训练 我想恢复 50 000 个检查点的所有旧变量
  • 如何按值(DESC)然后按键(ASC)对字典进行排序?

    就在发现了惊人的事情之后sorted 我又陷入困境了 问题是我有一本以下形式的字典string key integer value 我需要按整数值的降序对它进行排序 but如果两个元素具有相同的值 则按键的升序排列 一个更清楚的例子 d b
  • Flask Unicode 解码错误

    Error UnicodeDecodeError ascii 编解码器无法解码位置 24 中的字节 0xf0 序数不在范围内 128 所以基本上我有一个 Flask 应用程序 用户填写注册表单并呈现一个新页面 这是代码 render tem
  • 使 UIScrollView 以 UITextView 作为子视图获取触摸事件

    我有一个包含 UITextView 不可编辑 的 UIScrollView 我无法使 UIScrollView 获取触摸事件 UITextView 似乎获取并保留它们 知道如何让 UIScrollView 获取触摸事件吗 我希望 UITex
  • 在元素属性内回显?

    我只是想知道是否可以将 php echo 放入 iframe 中 像这样的东西 如果不是 正确的做法是什么 PHP 的工作方式是在发送 HTML 之前在幕后完成工作 因此当您实际将完整数据发送给用户时 它已被解析为应提供给浏览器的内容 也就
  • Jetpack Compose LargeTopAppBar 显示标题两次

    我正在尝试使用 Scaffold 和 LargeTopAppBar 构建 Jetpack Compose 应用程序 我目前有一个非常简单的 UI 只有 Scaffold 中的 LargeTopAppBar 但是当我运行我的应用程序时 我在屏
  • 使用 XML 和 XSL

    第一次编辑我正在获取Child 1标签以 C 形式放入 DropDownList 请建议用于删除 XML 文件中的父标签及其所有子标签的最佳实践代码 C 例子
  • 从n中生成k个元素的“反灰色”按需组合的算法

    我正在尝试实现一种算法 从一组 n 个元素中获取 k 个元素的所有组合 其中两个连续组合之间的差异最大化 类似于反向格雷码 换句话说 应该对组合进行排序以避免元素连续出现两次 这样就不会不必要地歧视任何元素 理想情况下 该算法也不会预先计算
  • C# 的每个循环按什么顺序迭代 List

    我想知道 C 中的 foreach 循环循环的顺序System Collections Generic List