2013-12-22 65 views
0

在編程科學中這個操作的官方名稱是什麼? 拳擊還是什麼? 我標誌着符合 「< ----」C#接口操作名稱

 Auto a = new Auto(); 

     // What de name of this operation? boxing or... ? 
     INitro inintro = a; // <--- There 
     inintro.DoExecute(); 

class Auto:INitro,IChip 
{ 

    void INitro.DoExecute() 
    { 
     System.Console.WriteLine("INITRO"); 
    } 

    void IChip.DoExecute() 
    { 
     System.Console.WriteLine("ICHIP"); 
    } 
} 
interface INitro 
{ 
    void DoExecute(); 
} 
+2

你的意思是「任務」? –

回答

1

這是一個 「向上轉型」。

想象繼承層次結構是從最小派生到最派生類型的自頂向下。你在上面的例子中做的是將更多派生類型作爲派生類型較少的類型。你有效地通過繼承hieararchy「上漲」 - 因此上漲演員。

你可以這樣做,因爲更多的派生類型保證派生得更少(但不是相反)。


順便說一句,你再不改變對象的類型,則僅僅做另一個引用它,這參考發生在你僅限制到較少導出的對象的「部分」。

這是多態性的基礎。當您在下面的行中調用inintro.DoExecute()時,它將通過所謂的「動態調度」(不要與dynamic類型混淆)並根據對象的運行時類型選擇方法。這在這種情況下並不是特別有用,因爲你可能只是a.DoExecute(),但它是組織大型程序的基本技術之一,其中特定對象的運行時類型可能未提前知道。

1

這不是拳擊或unboxing.It的Polymorphism

http://msdn.microsoft.com/en-us/library/ms173152.aspx

+1

嚴格地說,它的多態性可能只在下面的行中,當實際調用'DoExecute'方法時。 (如果C#編譯器沒有在那裏進行類型檢查並允許分配不兼容的類型,那麼在運行時會失敗,但它畢竟不會被稱爲「多態性」。) –