el.Attribute("...")和el.Attribute(XName.Get("..."))之间有区别吗?

Dan*_*mov 0 c# xelement linq-to-xml xattribute xname

在我们的生产代码中,我看到使用显式XName.Get调用读取XML属性:

var name = element.Attribute (XName.Get ("name"));
Run Code Online (Sandbox Code Playgroud)

我曾经总是将一个字符串传递给Attribute:

var name = element.Attribute ("name");
Run Code Online (Sandbox Code Playgroud)

这更具可读性,但我想知道逻辑或性能是否有任何差异.

SLa*_*aks 6

没有任何区别.
XName具有隐式转换string这就要求XName.Get.

你可以在源代码中看到这个:

/// <summary>
/// Converts a string formatted as an expanded XML name ({namespace}localname) to an XName object. 
/// </summary>
/// <param name="expandedName">A string containing an expanded XML name in the format: {namespace}localname.</param> 
/// <returns>An XName object constructed from the expanded name.</returns> 
[CLSCompliant(false)]
public static implicit operator XName(string expandedName) { 
    return expandedName != null ? Get(expandedName) : null;
}
Run Code Online (Sandbox Code Playgroud)