Статический неявный оператор

Недавно я нашел этот код:

 public static implicit operator XElement(XmlBase xmlBase)
 {
     return xmlBase.Xml;
 }

Что означает static implicit operator?

Ответ 1

Это оператор преобразования. Это означает, что вы можете написать этот код:

XmlBase myBase = new XmlBase();
XElement myElement = myBase;

И компилятор не будет жаловаться! Во время выполнения оператор преобразования будет выполнен - ​​передача myBase в качестве аргумента и возвращение в качестве результата действительного XElement.

Это способ для вас как разработчика рассказать компилятору:

", хотя они выглядят как два совершенно несвязанных типа, на самом деле есть способ конвертировать из одного в другой, просто позвольте мне обработать логику, как это сделать.

Ответ 2

Такой неявный оператор означает, что вы можете неявно преобразовывать XmlBase в XElement.

XmlBase xmlBase = WhatEverGetTheXmlBase();
XElement xelement = xmlBase;   
//no explicit convert here like: XElement xelement = (XElement)xmlBase;

Ответ 3

Это неявный оператор преобразования (в отличие от оператора Explicit, для которого требуется синтаксис преобразования (type))