这是 LINQ to XML 中的一个奇怪行为。这是一个参考 XML 文档。
<Root>
<First>first</First>
<Second></Second>
<Third />
</Root>
正如你所期望的那样root.Element("First").Value == "first"
是真的。
正如你所期望的那样root.Element("Second").Value == ""
是真的。
然后我会期望root.Element("Third").Value
是null
。但事情是这样的:root.Element("Third ").Value
返回一个空字符串。
以下是 .NET 框架的源代码:
public string Value
{
get
{
if (this.content == null)
{
return string.Empty;
}
string text = this.content as string;
if (text != null)
{
return text;
}
StringBuilder stringBuilder = new StringBuilder();
this.AppendText(stringBuilder);
return stringBuilder.ToString();
}
我的期望完全错误吗?这是一个错误的设计决定吗?我会写 areturn null
而不是 a return string.Empty
。
请注意,有一个IsEmpty
属性告诉标签是打开还是自关闭。