【问题标题】:Convert IEnumerable To List将 IEnumerable 转换为列表
【发布时间】:2013-05-28 11:11:01
【问题描述】:

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

什么更高效:

  1. myEnumerable.ToList()

  2. new List<T>(myEnumerable)

谢谢!

【问题讨论】:

  • 我懒得用reflector但可能myEnumerable.ToList()调用new List<T>(myEnumerable)

标签: .net linq list collections ienumerable


【解决方案1】:

它们的执行时间大致相同,但new List<T>(myEnumerable) 要快一些。

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      应该是一样的。 (第一个更具可读性。)

      【讨论】:

        猜你喜欢
        • 2013-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-23
        • 1970-01-01
        相关资源
        最近更新 更多