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

时间:2017-01-24 01:06:20

标签: c#

List theList中的项目索引是否与theList.ToArray()中的索引相同?即,theList[i]==theList.ToArray()[i]肯定吗?假设答案是肯定的,只想再仔细检查一下。

更新

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

2 个答案:

答案 0 :(得分:6)

ToArray使用Array.Copy保留了订单。

来自Array.Copy

  

从第一个元素开始复制Array中的一系列元素   并将它们粘贴到从第一个元素开始的另一个数组中。该   length指定为32位整数。

来自ToArray

  

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

答案 1 :(得分:2)

LINQ&#39; ToArray只是枚举集合并将结果填充到数组中。 List<T>线性列举,所以是的;指数将匹配。

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