将IEnumerable转换为List

use*_*862 6 .net linq collections ienumerable list

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

什么更有效:

  1. myEnumerable.ToList()

  2. 要么 new List<T>(myEnumerable)

谢谢!

use*_*727 6

它们或多或少地执行相同的时间但new List<T>(myEnumerable)速度要快一些.

myEnumerable.ToList()会做一个 new List<T>(myEnumerable)引擎盖,但它会首先检查集合是否为null并抛出异常(如果是).如果您知道myEnumerable不为null,那么您可以使用ToList().

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


Joe*_*Joe 4

第一个调用第二个,因此它们在所有意图和目的上都是相同的。

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