gpt4 book ai didi

c# - 为什么 XElement 的行为不像引用类型?

转载 作者:行者123 更新时间:2023-12-04 11:56:38 25 4
gpt4 key购买 nike

我注意到 XElement是一个类,所以我尝试了类似的东西:

var doc = new XDocument(
new XDeclaration("1.0", "utf8", "yes"),
new XElement("Root")
);
var root = doc.Root;
var com = new XElement("Component", new XAttribute("name", "arm"));
root.Add(com);
root.Add(com);
root.Add(com);
com.Add(new XAttribute("type", 1));

Console.WriteLine(doc);
但输出是:
<Root>
<Component name="arm" type="1" />
<Component name="arm" />
<Component name="arm" />
</Root>
我也试过 SetAttributeValue() ,并得到相同的结果。
为什么 type 属性只附加到第一个组件?

最佳答案

我的原始答案成立(基本上是“按设计”),这就是为什么......
来自 MS Documentation (并按照相关链接)您会发现

  • XElement继承XContainer继承XNode
  • XContainer有方法 Add()和属性FirstNodeLastNode
  • XNode有属性NextNodePreviousNode

  • Add()盲目添加对同一对象的引用而不在必要时创建副本以避免多重引用,如何避免循环引用?在上面的示例中, FirstNodeFirstNode.NextNode将引用同一个对象。

    关于c# - 为什么 XElement 的行为不像引用类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67771807/

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