今天反編譯別人的代碼出現類似下面的代碼,出現實例化時出錯.
public class baseClass
{
public baseClass()
{
GetString();
}
public virtual string GetString()
{
return string.Empty;
}
}
public class SubClas:baseClass
{
private string msg;
public SubClas(string mmsg):base()
{
msg = mmsg;
}
public override string GetString()
{
return msg.ToString();
}
}
這個問題當然可以在聲明子類成員時實例化成員,但總感覺這樣不太好,正在找原因呢,不知那位大俠已有更好的辦法.
我認爲GetString(當然原來的方法不是這類的)應屬性類初始化方法,此方法不應作爲虛方法提供,而應由各個子類自己負責自己的初始化方法,父類只負責自己的初始化,不然如果父類與子類的開發人員不是同一個人,或沒有父類的源碼,則很容易造子類編寫者一時找不到錯誤的原因.只能經過動態跟蹤調試才能找到原因.