如果XElement上的XAttribute不存在,是否有更简便/更好的方法来返回默认值?:
我正在尝试以更短的方式编写此代码(因为它是两行代码):
var a = root.Attribute("testAttribute");
var v = (a == null ? "" : a.Value);
我的方法:通过扩展方法:
public static XAttribute Attribute(this XElement obj, string name, string defaultValue)
{
if (obj.Attribute(name) == null)
return new XAttribute(name, defaultValue);
return obj.Attribute(name);
}
var v = root.Attribute("testAttribute", "").Value;
这会产生诸如负面的巨大速度影响之类的副作用吗?
有什么更好的方法吗?
最佳答案
有一种更简单的方法可以做到这一点:
var v = (string) root.Attribute("testAttribute") ?? "";
如果输入的
XAttribute
为空,则explicit conversion from string
to null
返回XAttribute
。然后,null-coalescing运算符可有效提供空字符串的默认值。当然,您仍然可以编写扩展方法,但是我会根据上述内容进行扩展。我还会将
name
参数更改为XName
类型,而不是string
类型,以提高灵活性。关于c# - XAttribute默认值(如果XElement上不存在),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13747621/