Is there an easier/better way to return a default value if a XAttribute on a XElement is not existing?:
I’m trying to write this in a shorter way (cause it’s a two-liner):
var a = root.Attribute("testAttribute");
var v = (a == null ? "" : a.Value);
My approach: via an extension method:
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;
Will this have any side-effects like a massive negative speed impact ?
Is there any better way to do that?
There’s a much easier way to do that:
The explicit conversion from
XAttributetostringreturnsnullif the inputXAttributeis null. The null-coalescing operator then effectively supplies the default value of an empty string.Of course, you can still write your extension method, but I’d do it in terms of the above. I’d also change the
nameparameter to be of typeXNameinstead ofstring, for more flexibility.