2010-10-23 46 views
1

比方說,我有一個父親和兒子誰應該既是非抽象的,我不會去父親身邊c'tor我所做的是這樣的:惰性如何去解決基礎構造

public class D 
{ 
    public D(int x) { } 

    public D() 
    { 
     Console.WriteLine("D:constructor"); 
    } 

} 
public class E:D 
{ 
    public E() : base(1) 
    { 
     Console.WriteLine("E:constructor"); 
    } 

}

有沒有另外一種更優雅的方式來繞過父構造器?

編輯:這只是一個例子,我確實有惰性的原因是在上帝的實踐或只是因爲c'tor是不同的我應該建立另一種設計?

+0

「什麼?」對於評論太短暫,但對於這種情況來說是完美的。 – Grozz 2010-10-23 13:57:18

+0

這是什麼不高雅?如果你想使用繼承的構造函數,你可以採用正確的方式。 – jsmith 2010-10-23 13:57:53

回答

0

這是在C#中處理基礎構造函數的方式。我可以建議的唯一更優雅的解決方案是在你的父類中的默認構造函數中做的很少。可能只是初始化適當的屬性,或者可能沒有做任何事情。這樣,如果你不想輸出「D:constructor」,你仍然可以使用E的默認構造函數,而不需要調用需要int的基類構造函數。

問題不在於它的設計方式,而在於您創建構造函數的方式。

+0

所以最好的方法是使用虛擬方法,這將是誰改變? – 2010-10-23 17:48:44

0

沒有辦法繞過基礎構造函數。即使你實現了上述,你仍然要通過'a'構造函數,但這是你能做的最好的。

相關問題