Recientemente encontré este código:
public static implicit operator XElement(XmlBase xmlBase)
{
return xmlBase.Xml;
}
Que static implicit operator
significa
Recientemente encontré este código:
public static implicit operator XElement(XmlBase xmlBase)
{
return xmlBase.Xml;
}
Que static implicit operator
significa
Este es un operador de conversión . Significa que puedes escribir este código:
XmlBase myBase = new XmlBase();
XElement myElement = myBase;
¡Y el compilador no se quejará! En el tiempo de ejecución, se ejecutará el operador de conversión: pasar myBase
como argumento y devolver un resultado válido XElement
como resultado.
Como desarrollador, es una forma de decirle al compilador:
"A pesar de que estos parecen dos tipos totalmente ajenos, en realidad hay una forma de convertir de uno a otro; solo déjenme manejar la lógica de cómo hacerlo".
Tal implícitos medios de operador que puede convertir
XmlBase
a laXElement
forma implícita.fuente
XElement xelement = (XElement)xmlBase;
En la pregunta que dicestatic
, ¿qué tiene que ser estático? ¿No puede ser no estático, por lo que puede ser instanciado?Otro uso interesante es (que Unity hizo para verificar si un objeto (y, por lo tanto, una instancia de MonoBehavior) es nulo):
Tenga en cuenta que el código debe estar dentro de la clase (CustomClass en este caso). De esa manera puedes hacer algo como esto:
Obviamente, el uso más notorio podría ser usarlo para convertir una de sus clases en otra de sus clases. Pero también vale la pena considerar su uso con tipos básicos ... y veo que se menciona muy raramente.
fuente
static implicit operator bool
método debe ser declarado dentro de laCustomClass
. He creado un DotNetFiddle para ello con fines de demostración.Es un operador de conversión implícito (a diferencia de un operador explícito, que requiere la
(type)
sintaxis de conversión)fuente