我当前的项目(C#3.5)有很多这样的代码(elem是XElement的一个实例):

textbox1.Text = elem.Element("TagName") == null ? "" : elem.Element("TagName").Value;

有没有办法在不重复调用elem.Element()且不使用扩展方法的情况下编写相同的东西?
也许使用lambdas? (但我不知道怎么做。)

最佳答案

XElement具有对String(和a bunch of other types)的显式转换,该转换将实际调用.Value。
换句话说,您可以这样写:

var value = (String)elem.Element("TagName");

我认为如果实际元素也为null,它将返回null

-编辑-

已验证,
这是一个例子:
 var x = new XElement("EmptyElement");
 var n = (String)x.Element("NonExsistingElement");

此后n将为null。

10-07 19:28
查看更多