Question

J'ai récemment trouvé ce code:

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

Que signifie de static implicit operator?

Était-ce utile?

La solution

Ceci est un opérateur de conversion . Cela signifie que vous pouvez écrire ce code:

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

Et le compilateur ne se plaindra pas! Lors de l'exécution, l'opérateur de conversion sera exécutée - en passant myBase en tant qu'argument, et en retournant une XElement valide le résultat

.

Il est une façon pour vous en tant que développeur pour indiquer au compilateur:

  

«même si ceux-ci ressemblent à deux types tout à fait sans rapport, il est en fait un moyen de convertir de l'un à l'autre. Me laisser Manipulez le logique de la façon de le faire »

Autres conseils

Un tel moyen de l'opérateur implicite, vous pouvez convertir XmlBase à XElement implicitement.

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

Il est un opérateur de conversion implicite (par opposition à un opérateur explicite, ce qui nécessite la syntaxe de conversion de (type))

Une autre utilisation intéressante est (ce qui fait l'unité pour vérifier si un objet (et donc une instance de MonoBehavior) est nulle):

public static implicit operator bool (CustomClass c)
{
    if (c == null) return false;
    else return true;
}

De cette façon, vous pouvez faire quelque chose comme ceci:

void Method ()
{
    CustomClass c1 = null;
    CustomClass c2 = new CustomClass ();

    bool b1 = c1; // is false
    bool b2 = c2; // is true

    if (!c1 && c2)
    {
        // Do stuff
    }
}

Il est évident que le plus célèbre usage pourrait être l'utiliser pour convertir un de vos cours à l'autre de vos classes. Mais les utiliser avec les types de base est la valeur d'une considération aussi bien ... et je le vois très rarement mentionné.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top