将IEnumerable转换为List

时间:2013-05-28 11:11:02

标签: .net linq list collections ienumerable

如果我想将Ienumerable(IEnumerable<T>)转换为列表。

效率更高:

  1. myEnumerable.ToList()

  2. new List<T>(myEnumerable)

  3. 谢谢!

3 个答案:

答案 0 :(得分:6)

它们或多或少地执行相同的时间,但new List<T>(myEnumerable)要快一点。

myEnumerable.ToList()会在底层执行new List<T>(myEnumerable),但它会首先检查集合是否为空,如果是,则抛出异常。如果您知道myEnumerable不为null,那么您可以使用ToList()。

但是,在我看来,编写最容易阅读的代码。这是一个微观优化,你不应该花太多时间。

答案 1 :(得分:4)

第一个调用第二个,所以它们将是相同的所有意图和目的。

JITter可能会内联ToList()方法,这将使它们以模数形式进行无效检查。可以说Enumerable<T>.ToList()中的空检查是多余的,因为它调用的List<T>构造函数也执行空检查。

答案 2 :(得分:2)

会是一样的。 (首先是更具可读性。)