静态隐式运算符
我最近发现这个代码:
public static implicit operator XElement(XmlBase xmlBase) { return xmlBase.Xml; }
static implicit operator
是什么意思?
这是一个转换操作符 。 这意味着你可以写这个代码:
XmlBase myBase = new XmlBase(); XElement myElement = myBase;
而编译器不会抱怨! 在运行时,转换运算符将被执行 – 将myBase
作为parameter passing,并返回一个有效的XElement
作为结果。
作为开发人员,您可以告诉编译器:
“即使这些看起来像两个完全不相关的types,但实际上有一种方法可以从一个转换到另一个,让我来处理如何做到这一点的逻辑。
这样的隐式运算符意味着您可以隐式地将XmlBase
转换为XElement
。
XmlBase xmlBase = WhatEverGetTheXmlBase(); XElement xelement = xmlBase; //no explicit convert here like: XElement xelement = (XElement)xmlBase;
这是一个隐式转换运算符(与Explicit运算符相反,它需要(type)
转换语法)