这似乎...关闭。 MSDN's Documentation on IQueryable既有ToList()
和ToArray()
为有效扩展methods.`
同时使用ToList()
和ToArray()
似乎过于冗余和大集合潜在非高性能(不要引用我在这,纯属炒作!:))
T[]
和List<T>
都执行IEnumerable<T>
所以只要该方法返回IEnumerable<T>
那么它应该没有关系。
public IEnumerable<int> GetNumbers()
{
return Enumerable.Range(0,10)
.ToList();
}
public IEnumerable<int> GetNumbers()
{
return Enumerable.Range(0,10)
.ToArray();
}
public IEnumerable<int> GetNumbers()
{
return Enumerable.Range(0,10);
}
所有这些前面提到的方法,都会正确编译和构建。假设不在同一班级,但这是一个不同的问题。
现在,这些下面的方法将不会:
public List<int> GetNumbers()
{
// Compile error as int[] and List<int> are different types
return Enumerable.Range(0,10)
.ToArray();
}
public int[] GetNumbers()
{
// Compile error as int[] and List<int> are different types
return Enumerable.Range(0,10)
.ToList();
}
如果呼叫者期待一个IEnumerable的''要返回然后做了'ToList()'就足够了,你不需要调用'ToArray的()'。 –