我最近發現這個代碼:靜態隱運營商
public static implicit operator XElement(XmlBase xmlBase)
{
return xmlBase.Xml;
}
是什麼static implicit operator
意思?
我最近發現這個代碼:靜態隱運營商
public static implicit operator XElement(XmlBase xmlBase)
{
return xmlBase.Xml;
}
是什麼static implicit operator
意思?
這是一個conversion operator。這意味着你可以寫下這段代碼:
XmlBase myBase = new XmlBase();
XElement myElement = myBase;
而且編譯器不會抱怨!在運行時,將執行轉換運算符 - 將myBase
作爲參數傳遞,並返回有效的XElement
作爲結果。
這是一種讓你作爲一個開發者告訴編譯器:
「儘管這些看起來像兩個完全不相關的類型,實際上是從一個到另一個轉換的方式,只是讓我處理如何做到這一點的邏輯。「
這樣一個隱式運算符意味着您可以隱式地將XmlBase
轉換爲XElement
。
XmlBase xmlBase = WhatEverGetTheXmlBase();
XElement xelement = xmlBase;
//no explicit convert here like: XElement xelement = (XElement)xmlBase;
這是一個隱式轉換操作(而不是顯式操作,這就要求(type)
轉換語法)
誰能告訴我我的答案有什麼問題嗎? – 2010-11-25 04:44:19
無論如何,這個顯式轉換工作嗎? `XElement xelement =(XElement)xmlBase;`在靜態問題中,它必須是靜態的?它不能是非靜態的,所以它可以被實例化? – aspiring 2013-02-15 10:02:59