静态隐式运算符

我最近发现这个代码:

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)转换语法)