2012-06-18 147 views
6

我遇到了派生類的基礎構造函數沒有得到執行的問題。我做了這一百次,我無法弄清楚爲什麼基礎構造函數沒有執行。我希望有人能找到一些簡單的東西,我錯過了。代碼示例如下。有沒有人有任何想法,爲什麼我的基礎構造函數沒有被首先調用?我有其他類以相同的方式實現,並且基礎構造函數總是被首先調用。基礎構造函數未被調用

if (item.GetType() == typeof(OtherChargeItem)) 
{ 
    OtherChargeItemAddUpdateTest test = new OtherChargeItemAddUpdateTest((OtherChargeItem)item); 
    test.StartPosition = FormStartPosition.CenterParent; 
    test.ShowDialog(); 
} 

public OtherChargeItemAddUpdateTest() 
{ 
    InitializeComponent(); 
} 

public OtherChargeItemAddUpdateTest(OtherChargeItem item) 
     : base() 
{ 
    currentItem = item; 
} 
+3

你能在這裏顯示繼承層次嗎? – JaredPar

回答

22

它看起來像你想調用在同一類的默認構造函數,而不是基類,當第二構造函數被調用,從而InitializeComponent被調用。嘗試this()而不是base()

+3

+1是的,很好的演繹技巧。他可能認爲默認的構造函數被稱爲「基礎構造函數」。 –

+4

謝謝,我正準備表達我現在覺得多麼愚蠢。只要JaredPar要求繼承層次結構,我就意識到我在描述這個問題時的缺陷,以及過去30分鐘我一直在試圖做的事情。感謝您的幫助和遺憾,因爲某種原因,今天早上我的大腦並不是那麼微不足道的小問題,因此浪費了大家的時間。 – Grasshopper

+0

什麼是這樣的協議?我應該修改問題以更好地反映我的問題應該是什麼? – Grasshopper