Ich habe kürzlich diesen Code gefunden:
public static implicit operator XElement(XmlBase xmlBase)
{
return xmlBase.Xml;
}
Was heißt static implicit operator
das
Ich habe kürzlich diesen Code gefunden:
public static implicit operator XElement(XmlBase xmlBase)
{
return xmlBase.Xml;
}
Was heißt static implicit operator
das
Dies ist ein Konvertierungsoperator . Dies bedeutet, dass Sie diesen Code schreiben können:
XmlBase myBase = new XmlBase();
XElement myElement = myBase;
Und der Compiler wird sich nicht beschweren! Zur Laufzeit wird der Konvertierungsoperator ausgeführt - myBase
als Argument übergeben und XElement
als Ergebnis eine gültige zurückgegeben .
Auf diese Weise können Sie als Entwickler dem Compiler Folgendes mitteilen:
"Auch wenn diese Typen wie zwei völlig unabhängige Typen aussehen, gibt es tatsächlich eine Möglichkeit, von einem zum anderen zu konvertieren. Lassen Sie mich einfach die Logik dafür handhaben."
Eine solche implizite Operator Mittel können Sie konvertieren
XmlBase
zuXElement
implizit.quelle
XElement xelement = (XElement)xmlBase;
In der Frage heißt esstatic
, was muss es statisch sein? Kann es nicht nicht statisch sein, damit es instanziiert werden kann?Eine weitere interessante Verwendung ist (die Unity durchgeführt hat, um zu überprüfen, ob ein Objekt (und damit eine Instanz von MonoBehavior) null ist):
Beachten Sie, dass sich der Code innerhalb der Klasse befinden muss (in diesem Fall CustomClass). Auf diese Weise können Sie so etwas tun:
Offensichtlich könnte die berüchtigtste Verwendung darin bestehen, eine Ihrer Klassen in eine andere Ihrer Klassen umzuwandeln. Aber es lohnt sich auch, sie mit Grundtypen zu verwenden ... und ich sehe, dass dies ziemlich selten erwähnt wird.
quelle
static implicit operator bool
Methode muss innerhalb der deklariert werdenCustomClass
. Ich habe eine DotNetFiddle dafür für Demozwecke erstellt.Es ist ein impliziter Konvertierungsoperator (im Gegensatz zu einem expliziten Operator, für den die
(type)
Konvertierungssyntax erforderlich ist ).quelle