我剛纔碰到一些我不明白的代碼。這是有效的爲什麼使用as關鍵字初始化一個對象
Class c = new BaseClass() as Class;
我不明白這樣做的好處,所以我創建了我自己的控制檯應用程序,看看它是什麼。
namespace Initialize
{
class Program
{
static void Main(string[] args)
{
Demo demo = new Demo();
demo.BaseProp = "";
demo.DemoProp = "";
BaseDemo baseDemo = new BaseDemo();
baseDemo.BaseProp = "";
BaseDemo baseDemo2 = new Demo();
baseDemo2.BaseProp = "";
BaseDemo baseDemo3 = new Demo() as BaseDemo;
baseDemo3.BaseProp = "";
//fails runtime
//Demo demo2 = (Demo)baseDemo;
Demo demo3 = (Demo)baseDemo2;
demo3.BaseProp = "";
demo3.DemoProp = "";
Demo demo4 = (Demo)baseDemo3;
demo4.BaseProp = "";
demo4.DemoProp = "";
}
}
class BaseDemo
{
public string BaseProp { get; set; }
}
class Demo : BaseDemo
{
public string DemoProp { get; set; }
}
}
我只能假設這提供了相對於多形性一些額外的幫助,但我不知道如何或看到有什麼區別:
BaseDemo baseDemo2 = new Demo();
和
BaseDemo baseDemo3 = new Demo() as BaseDemo;
因爲我正在努力思考爲什麼這樣做了..讓我把它扔在那裏:我們有這樣的隨機廢話,在我們的(繼承)代碼庫中沒有任何押韻或理由。如果這裏沒有真正的意圖,我不會感到驚訝,只是缺乏理解。 –
正如所寫的,Demo d = new BaseDemo()爲Demo;'保證等價於'Demo d = null;'您可能缺少/誤解了代碼的某些部分,或者開發人員構建了一個代碼爲零工作的希望。 – dasblinkenlight