gpt4 book ai didi

c# - 编译器会优化两次创建此列表吗?

转载 作者:太空狗 更新时间:2023-10-30 00:21:44 26 4
gpt4 key购买 nike

public SharpQuery Add(params HtmlNode[] elements)
{
var nodes = new List<HtmlNode>(_context.Count + elements.Length);
nodes.AddRange(_context);
nodes.AddRange(elements);
return new SharpQuery(nodes, this);
}

public SharpQuery(IEnumerable<HtmlNode> nodes, SharpQuery previous = null)
{
if (nodes == null) throw new ArgumentNullException("nodes");
_previous = previous;
_context = new List<HtmlNode>(nodes);
}

我有一大堆函数可以创建一个新的 List<T> ,向其添加一堆节点,然后将其传递给构造函数,该构造函数获取列表,并使用它创建另一个新列表。

编译器是否足够聪明,知道它真的不需要创建列表两次?

最佳答案

这不是“足够聪明”的情况——编译器按照它的指示去做;你告诉它创建多个列表:它会创建多个列表。

但是,由于您及时释放它们,它们应该被相当干净地收集起来,希望是 gen-0。因此,除非您在一个紧密的循环中执行此操作,否则我不会对此感到太兴奋。

如果您想避免列表,您可能考虑 LINQ Concat,它允许您附加序列而无需任何额外的列表/集合等。

关于c# - 编译器会优化两次创建此列表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4121999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com