如果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/

10-10 07:38