【问题标题】:Is there a difference between new List<int>(array) and array.ToList()?new List<int>(array) 和 array.ToList() 之间有区别吗?
【发布时间】:2014-01-22 15:47:13
【问题描述】:

就性能和底层成本而言,通过 array.ToList() 方法将数组放入 List 与通过下面代码中的 new List(array) 实现它有区别吗?

IEnumerable<int> array = new int[]{1,2,3,4,5,6,7,8};
List<int> list_Foo = new List<int>(array);
List<int> list_Bar = array.ToList();

【问题讨论】:

    标签: c# .net list collections generic-list


    【解决方案1】:

    没有; Enumerable.ToList&lt;T&gt; 扩展方法只是一个调用 List(IEnumerable&lt;T&gt;) 构造函数的包装器。

    ToList 带来的唯一额外成本是额外的方法调用和无效性检查,这些成本通常可以忽略不计(甚至可能被 JIT 编译器消除)。

    【讨论】:

      【解决方案2】:

      在内部,对array.ToList() (Enumerable.ToList()) 的调用如下所示:

      if (source == null)
          throw Error.ArgumentNull("source");
      
      return new List<TSource>(source);
      

      所以您的第二个示例运行与您的第一个示例相同的代码。

      【讨论】:

        猜你喜欢
        • 2020-08-19
        • 2017-10-17
        • 2015-07-01
        • 2018-02-25
        • 2020-09-24
        • 1970-01-01
        • 2020-11-17
        • 2017-12-23
        • 1970-01-01
        相关资源
        最近更新 更多