Encontrei recentemente este código:
public static implicit operator XElement(XmlBase xmlBase)
{
return xmlBase.Xml;
}
O que static implicit operator
significa isso ?
Encontrei recentemente este código:
public static implicit operator XElement(XmlBase xmlBase)
{
return xmlBase.Xml;
}
O que static implicit operator
significa isso ?
Este é um operador de conversão . Isso significa que você pode escrever este código:
XmlBase myBase = new XmlBase();
XElement myElement = myBase;
E o compilador não vai reclamar! Em tempo de execução, o operador de conversão será executado - passando myBase
como argumento e retornando um válido XElement
como resultado.
É uma maneira de você, como desenvolvedor, dizer ao compilador:
"mesmo que pareçam dois tipos totalmente independentes, na verdade existe uma maneira de converter de um para o outro; deixe-me lidar com a lógica de como fazê-lo."
Tal um meio operador implícitas você pode converter
XmlBase
paraXElement
implicitamente.fonte
XElement xelement = (XElement)xmlBase;
Na pergunta que dizstatic
, o que tem que ser estático? Não pode ser não estático, para ser instanciado?Outro uso interessante é (que o Unity fez para verificar se um objeto (e, portanto, uma instância do MonoBehavior) é nulo):
Observe que o código deve estar dentro da classe (CustomClass neste caso). Dessa forma, você pode fazer algo assim:
Obviamente, o uso mais notório pode ser usá-lo para converter uma de suas classes em outra. Mas usá-los com tipos básicos também vale a pena considerar ... e vejo isso mencionado muito raramente.
fonte
static implicit operator bool
método deve ser declarado dentro do arquivoCustomClass
. Eu criei um DotNetFiddle para ele para fins de demonstração.É um operador implícito de conversão (em oposição a um operador explícito, que requer a
(type)
sintaxe de conversão)fonte