通过array.ToList()方法将数组添加到List中,并且在下面的代码中通过新的List(数组)执行此操作是否存在差异,就其性能和引擎成本而言?< / p>
IEnumerable<int> array = new int[]{1,2,3,4,5,6,7,8};
List<int> list_Foo = new List<int>(array);
List<int> list_Bar = array.ToList();
答案 0 :(得分:4)
没有; Enumerable.ToList<T>
扩展方法只是一个调用List(IEnumerable<T>)
构造函数的包装器。
从ToList
中产生的唯一额外成本是额外的方法调用和无效性检查,这些成本通常可以忽略不计(甚至可能被JIT编译器消除)。
答案 1 :(得分:2)
在内部,这是array.ToList()
(Enumerable.ToList()
)的调用:
if (source == null)
throw Error.ArgumentNull("source");
return new List<TSource>(source);
所以你的第二个例子运行与第一个例子相同的代码。