你需要知道的隐式转换操作符
首先大家来看下面这一行代码
XNamespace d = "http://schemas.microsoft.com/ado/2007/08/dataservices";
我们需要构造一个XNamespace对象,按一般的习惯,我们需要New(…..)对吧,但是为什么可以直接将一个字符串给赋值过去呢?
其实这就是隐式转换操作符 ,请看下面的代码实现
using System; namespace System.Xml.Linq { // 摘要: // 表示一个 XML 命名空间。无法继承此类。 public sealed class XNamespace { // 摘要: // 返回一个指示 System.Xml.Linq.XNamespace 的两个实例是否相等的值。 // // 参数: // left: // 要比较的第一个 System.Xml.Linq.XNamespace。 // // right: // 要比较的第二个 System.Xml.Linq.XNamespace。 // // 返回结果: // 一个 System.Boolean,指示 left 和 right 是否不等。 public static bool operator !=(XNamespace left, XNamespace right); // // 摘要: // 将 System.Xml.Linq.XNamespace 对象与本地名进行组合来创建 System.Xml.Linq.XName。 // // 参数: // ns: // 一个包含命名空间的 System.Xml.Linq.XNamespace。 // // localName: // 一个包含本地名称的 System.String。 // // 返回结果: // 从命名空间和本地名称构造的新 System.Xml.Linq.XName。 public static XName operator +(XNamespace ns, string localName); // // 摘要: // 返回一个指示 System.Xml.Linq.XNamespace 的两个实例是否相等的值。 // // 参数: // left: // 要比较的第一个 System.Xml.Linq.XNamespace。 // // right: // 要比较的第二个 System.Xml.Linq.XNamespace。 // // 返回结果: // 一个 System.Boolean,指示 left 和 right 是否相等。 public static bool operator ==(XNamespace left, XNamespace right); // // 摘要: // 将包含统一资源标识符 (URI) 的字符串转换为 System.Xml.Linq.XNamespace。 // // 参数: // namespaceName: // 一个包含命名空间 URI 的 System.String。 // // 返回结果: // 从 URI 字符串构造的 System.Xml.Linq.XNamespace。 [CLSCompliant(false)] public static implicit operator XNamespace(string namespaceName); // 摘要: // 获取此命名空间的统一资源标识符 (URI)。 // // 返回结果: // 一个包含命名空间 URI 的 System.String。 public string NamespaceName { get; } // // 摘要: // 获取不与命名空间对应的 System.Xml.Linq.XNamespace 对象。 // // 返回结果: // 不与命名空间对应的 System.Xml.Linq.XNamespace。 public static XNamespace None { get; } // // 摘要: // 获取与 XML URI (http://www.w3.org/XML/1998/namespace) 对应的 System.Xml.Linq.XNamespace // 对象。 // // 返回结果: // 与 XML URI (http://www.w3.org/XML/1998/namespace) 对应的 System.Xml.Linq.XNamespace。 public static XNamespace Xml { get; } // // 摘要: // 获取与 xmlns URI (http://www.w3.org/2000/xmlns/) 对应的 System.Xml.Linq.XNamespace // 对象。 // // 返回结果: // 与 xmlns URI (http://www.w3.org/2000/xmlns/) 对应的 System.Xml.Linq.XNamespace。 public static XNamespace Xmlns { get; } // 摘要: // 确定指定的 System.Xml.Linq.XNamespace 是否等于当前的 System.Xml.Linq.XNamespace。 // // 参数: // obj: // 要与当前 System.Xml.Linq.XNamespace 进行比较的 System.Xml.Linq.XNamespace。 // // 返回结果: // 一个 System.Boolean,指示指定的 System.Xml.Linq.XNamespace 是否等于当前的 System.Xml.Linq.XNamespace。 public override bool Equals(object obj); // // 摘要: // 获取指定的统一资源标识符 (URI) 的 System.Xml.Linq.XNamespace。 // // 参数: // namespaceName: // 一个包含命名空间 URI 的 System.String。 // // 返回结果: // 从指定的 URI 创建的 System.Xml.Linq.XNamespace。 public static XNamespace Get(string namespaceName); // // 摘要: // 获取此 System.Xml.Linq.XNamespace 的哈希代码。 // // 返回结果: // 一个 System.Int32,其中包含 System.Xml.Linq.XNamespace 的哈希代码。 public override int GetHashCode(); // // 摘要: // 返回从此 System.Xml.Linq.XNamespace 和指定的本地名称创建的 System.Xml.Linq.XName 对象。 // // 参数: // localName: // 一个包含本地名称的 System.String。 // // 返回结果: // 从此 System.Xml.Linq.XNamespace 和指定的本地名称创建的 System.Xml.Linq.XName。 public XName GetName(string localName); // // 摘要: // 返回此 System.Xml.Linq.XNamespace 的 URI。 // // 返回结果: // 此 System.Xml.Linq.XNamespace 的 URI。 public override string ToString(); } }