为什么 FirstNode.GetType() return 是 XElement 而不是 XNode

Why does FirstNode.GetType() return an XElement and not a XNode

C# 文档说 FirstNode 属性 returns 是一个 XNode。

public System.Xml.Linq.XNode FirstNode { get; }

然而,当我调用它的 GetType() 方法时,它显示 System.Xml.Linq.XElement

例如..

var MyElement = new XElement("Base",
                new XElement("FirstName", "John",
                    new XComment("Thats a cool name")),
                new XElement("LastName", "Doe")
            );

Console.WriteLine(MyElement.FirstNode.GetType());//System.Xml.Linq.XElement

此外,它没有像 属性 FirstNode 本身那样适用于 XElements 的方法。 有人可以解释发生了什么。

根据docs,XElement继承自XNode。 FirstNode 可以是从 XNode 继承的任何东西。

Object.GetType returns 当前实例的确切运行时类型 (docs)。在你的例子中 First 返回的节点是 XElement,它是 XNode.

的后代

来自 docsXElement 的类型层次结构:

Object -> XObject -> XNode -> XContainer -> XElement