那麼,最初我有幾個常量(如MAX_SPEED)在每個派生類中都有不同的值。這個想法是在基類的某些方法中使用這些值。那時候我意識到我不能用常量來做到這一點,所以我創建了只讀屬性。調用派生類的構造函數在基類的構造函數之前執行
我需要一種方法將這些值分配給實例化時的私有字段,最好在基類中。但首先我必須在派生類中分配原始值。由於這些是屬性,我無法在定義時找到初始化它們的方法,所以唯一的方法是在派生的構造函數中。
這就是問題出現的地方:值在分配給基類中的私有字段後被初始化。我擺脫的解決方案是創建一個虛擬方法並在那裏進行分配。
有沒有辦法從派生類調用基礎構造函數,以便從派生的構造函數的代碼將被首先調用?
class BaseClass
{
public BaseClass()
{
System.Console.WriteLine("This should be shown after");
}
}
class DerivedClass : BaseClass
{
public DerivedClass() : base()
{
System.Console.WriteLine("This should be shown first");
}
}
當然在這個例子中,它會以相反的方式工作。有解決方案嗎?
不需要。您必須先調用基礎構造函數,如果不這樣做,則會出現錯誤。順便說一句你爲什麼要這個? – ppetrov 2013-05-11 15:48:59
我在Jon的回答評論中描述了這種情況。我想我應該在問題中說清楚。 – msgmaxim 2013-05-12 11:45:05