7

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

什么更有效:

  1. myEnumerable.ToList()

  2. 或者new List<T>(myEnumerable)

谢谢!

4

3 回答 3

7

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

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

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

于 2013-05-28T11:16:10.977 回答
4

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

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

于 2013-05-28T11:13:49.770 回答
2

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

于 2013-05-28T11:15:19.110 回答