Baru-baru ini saya menemukan kode ini:
public static implicit operator XElement(XmlBase xmlBase)
{
return xmlBase.Xml;
}
Apa static implicit operator
artinya
Baru-baru ini saya menemukan kode ini:
public static implicit operator XElement(XmlBase xmlBase)
{
return xmlBase.Xml;
}
Apa static implicit operator
artinya
Ini adalah operator konversi . Ini berarti Anda dapat menulis kode ini:
XmlBase myBase = new XmlBase();
XElement myElement = myBase;
Dan kompiler tidak akan mengeluh! Saat runtime, operator konversi akan dieksekusi - lewat myBase
sebagai argumen, dan mengembalikan yang valid XElement
sebagai hasilnya.
Ini cara Anda sebagai pengembang untuk memberi tahu kompiler:
"Meskipun ini terlihat seperti dua jenis yang sama sekali tidak berhubungan, sebenarnya ada cara untuk mengkonversi dari satu ke yang lain; biarkan aku menangani logika bagaimana melakukannya."
Seperti sarana Operator implisit Anda dapat mengkonversi
XmlBase
keXElement
implisit.sumber
XElement xelement = (XElement)xmlBase;
Dalam pertanyaannyastatic
, apa yang harus statis? Tidak bisakah itu non-statis, jadi itu bisa dipakai?Penggunaan lain yang menarik adalah (yang dilakukan Unity untuk memeriksa apakah suatu objek (dan karenanya turunan dari MonoBehavior) adalah nol):
Perhatikan bahwa kode harus berada di dalam kelas (CustomClass dalam kasus ini). Dengan begitu Anda dapat melakukan sesuatu seperti ini:
Jelas penggunaan yang paling terkenal mungkin menggunakannya untuk mengkonversi salah satu kelas Anda ke kelas Anda yang lain. Tetapi menggunakannya dengan tipe dasar juga patut dipertimbangkan ... dan saya melihatnya jarang disebutkan.
sumber
static implicit operator bool
metode harus dideklarasikan di dalamCustomClass
. Saya telah membuat DotNetFiddle untuk tujuan demo.Ini adalah operator konversi implisit (sebagai lawan dari operator Eksplisit, yang memerlukan
(type)
sintaksis konversi)sumber