我有一個相當冗長的構造函數,它執行各種初始化工作,因此我想將這些工作分解到一些函數中。這導致我懷疑我是否應該製作所述的函數實例或靜態方法。我明白從構造函數調用虛函數的風險,但我也認爲在未實例化的對象上調用實例方法是不對的。這當然是矛盾的。從C中的構造函數調用實例方法#
我會對這個問題的意見感興趣。我還發現,通過使用靜態方法返回初始化變量,我可以使成員目標是隻讀的。以下是我的場景的簡單說明。
public class A
{
private readonly string _foo;
public A()
{
_foo = InitialiseFoo();
}
private static InitialiseFoo()
{
// Do stuff
return new string ("foo");
}
}
爲什麼你有一個冗長的構造函數?這不是構造函數應該如何。您應該使用方法來執行冗長的操作。當你嘗試使用一些API並且這個API在其構造函數中執行數據庫訪問和東西並且可能拋出異常和東西時總是非常令人沮喪。做到這一點。這真的很煩人。構造函數應該很簡單。 –
我完全同意你的看法,但我正在編寫一個windows服務,它需要首先從配置文件中獲取它的服務名稱。你只能在它的構造函數中設置一個服務的名字,所以我有點困惑。 – user738134