Niedawno znalazłem ten kod:
public static implicit operator XElement(XmlBase xmlBase)
{
return xmlBase.Xml;
}
Co to static implicit operator
znaczy?
Niedawno znalazłem ten kod:
public static implicit operator XElement(XmlBase xmlBase)
{
return xmlBase.Xml;
}
Co to static implicit operator
znaczy?
To jest operator konwersji . Oznacza to, że możesz napisać taki kod:
XmlBase myBase = new XmlBase();
XElement myElement = myBase;
A kompilator nie będzie narzekał! W czasie wykonywania zostanie wykonany operator konwersji - przekazujący myBase
jako argument i zwracający prawidłowy XElement
wynik.
Jest to sposób, w jaki programista może powiedzieć kompilatorowi:
„nawet jeśli wyglądają na dwa zupełnie niepowiązane typy, w rzeczywistości istnieje sposób na konwersję z jednego do drugiego; pozwól mi tylko zająć się logiką, jak to zrobić”.
Taki niejawny operator oznacza, że można przekonwertować
XmlBase
naXElement
niejawny.źródło
XElement xelement = (XElement)xmlBase;
W pytaniu, które mówistatic
, co to musi być statyczne? Czy nie może być statyczny, więc można go utworzyć?Innym interesującym zastosowaniem jest (które Unity zrobiło, aby sprawdzić, czy obiekt (a tym samym instancja MonoBehavior) jest null):
Zwróć uwagę, że kod musi znajdować się wewnątrz klasy (w tym przypadku CustomClass). W ten sposób możesz zrobić coś takiego:
Oczywiście najbardziej znanym zastosowaniem może być użycie go do konwersji jednej z twoich klas na inną. Ale używanie ich z podstawowymi typami również jest warte rozważenia ... i rzadko o tym wspominam.
źródło
static implicit operator bool
metoda musi być zadeklarowane wewnątrzCustomClass
. Stworzyłem dla niego DotNetFiddle do celów demonstracyjnych.Jest to niejawny operator konwersji (w przeciwieństwie do operatora jawnego, który wymaga
(type)
składni konwersji)źródło