gpt4 book ai didi

c# - 如果我从 XDocument 创建 XElements 列表,是否会在内存中创建元素列表的新副本?

转载 作者:数据小太阳 更新时间:2023-10-29 02:26:24 24 4
gpt4 key购买 nike

如果我有一个 XDocumentXDocument.Load 加载到内存中然后我对其执行 LINQ-XML 查询,例如:

XDocument doc = XDocument.Load(@"C:/doc.xml");
var orders = doc.Root.Element("Envelope").Elements("Order");

是否有 IEnumerable<XElement> 的内存副本由第二行返回?或者它只是原件的引用副本 XDocument

如果我实际上通过调用 .ToList() 来枚举它呢? ?

最佳答案

XDocument.Load 会将整个数据集读入内存。

对数据的查询将返回对现有元素的引用。例如,检查 GetElement 的引用来源,它直接(通过引用)将 yield 的现有节点传递给调用者。

查询文档时产生的主要额外内存是实现迭代器本身所需的内存,与文档大小相比应该非常小。

关于c# - 如果我从 XDocument 创建 XElements 列表,是否会在内存中创建元素列表的新副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26371276/

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