新的List <int>(array)和array.ToList()?</int>之间有区别吗?

时间:2014-01-22 15:47:14

标签: c# .net list collections generic-list

通过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();

2 个答案:

答案 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);

所以你的第二个例子运行与第一个例子相同的代码。