C# List.ToArray()是否保留索引?

C# List.ToArray()是否保留索引?,c#,C#,列表中的项目索引是否与列表中的项目索引相同。ToArray()?i、 例如,theList[i]==theList.ToArray()[i]是否确定?假设答案是肯定的,我想再核实一下 更新: 这里有一个用例,如果你不能想象这是有用的:我正在使用一个接受数组作为输入的优化例程。目前我的变量在列表中。我想对变量运行优化例程,然后获取优化例程的结果(显然是一个数组),并将它们放回列表中。我想确保我能把它们恢复到原来的索引。使用“引擎盖下”来保持秩序 从数组。复制 从数组的第一个元素开始复制元素范围 并

列表中的项目索引是否与
列表中的项目索引相同。ToArray()
?i、 例如,
theList[i]==theList.ToArray()[i]
是否确定?假设答案是肯定的,我想再核实一下

更新:

这里有一个用例,如果你不能想象这是有用的:我正在使用一个接受数组作为输入的优化例程。目前我的变量在列表中。我想对变量运行优化例程,然后获取优化例程的结果(显然是一个数组),并将它们放回列表中。我想确保我能把它们恢复到原来的索引。

使用“引擎盖下”来保持秩序

从数组。复制

从数组的第一个元素开始复制元素范围 并从第一个元素开始将它们粘贴到另一个数组中。这个 长度指定为32位整数

从托雷

使用Array.Copy复制元素,这是一个O(n)操作, 其中n是计数


LINQ的
ToArray
只是枚举集合并将结果填充到数组中<代码>列表
线性枚举,所以是;指数将匹配


请注意,.NET规范/文档并不保证这一点,但不太可能改变。

不知道LINQ版本是否有明确的接口实现+1因为“标准”的原因它会工作。@dashnick不是DV,但可能有人认为它“没有用处”;如果你对某件事依赖索引顺序,那么你通常在C#@BradleyDotNET中做错了什么?依赖于有序集合的排序在某种程度上是错误的?@Ryan一般来说,你不需要索引到集合中;因此,索引匹配变得无关紧要(依赖于此可能会导致代码出现bug)。@BradleyDotNET:这是一个糟糕的概括,“索引匹配”只是“顺序相同”的另一种说法。@KeithNicholas绝对,我想我们不同意的地方在于这一事实的重要性与否。