C# 新列表之间是否存在差异<;int>;(array)和array.ToList()?

C# 新列表之间是否存在差异<;int>;(array)和array.ToList()?,c#,.net,list,collections,generic-list,C#,.net,List,Collections,Generic List,在下面的代码中,通过array.ToList()方法将数组放入一个列表和通过新列表(数组)执行有什么区别吗 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(); IEnumerable数组=新int[]{1,2,3,4,5,6,7,8};

在下面的代码中,通过array.ToList()方法将数组放入一个列表和通过新列表(数组)执行有什么区别吗

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();
IEnumerable数组=新int[]{1,2,3,4,5,6,7,8};
列表\u Foo=新列表(数组);
List_Bar=array.ToList();

否;
Enumerable.ToList
扩展方法只是调用
List(IEnumerable)
构造函数的包装器


您将从
ToList
中招致的唯一额外成本是额外的方法调用和空值检查,这通常可以忽略不计(甚至可能被JIT编译器消除)。

No;
Enumerable.ToList
扩展方法只是调用
List(IEnumerable)
构造函数的包装器


ToList
带来的唯一额外成本是额外的方法调用和空值检查,这通常可以忽略不计(甚至可以通过JIT编译器消除)。在内部,以下是对
array.ToList()
Enumerable.ToList()
)的调用:

if (source == null)
    throw Error.ArgumentNull("source");

return new List<TSource>(source);
if(source==null)
抛出错误。ArgumentNull(“源”);
返回新列表(源);

因此,您的第二个示例运行的代码与第一个示例相同。

在内部,对
array.ToList()
Enumerable.ToList()
)的调用如下所示:

if (source == null)
    throw Error.ArgumentNull("source");

return new List<TSource>(source);
if(source==null)
抛出错误。ArgumentNull(“源”);
返回新列表(源);
因此,第二个示例运行与第一个示例相同的代码