如何以及何時調用基類的構造函數在C#如何以及何時調用C#基類構造函數
回答
你可以調用基類的構造函數是這樣的:
// Subclass constructor
public Subclass()
: base()
{
// do Subclass constructor stuff here...
}
你會召喚基類,如果有所有子類需要設置的東西。需要初始化的對象等...
希望這有助於。
你也可以像這樣調用基類構造函數:'public Subclass() {}' - 這與您的示例具有完全相同的行爲。 – 2011-03-17 06:16:15
從子類構造函數調用基類構造函數通常是一種很好的做法,以確保基類在您的子類之前進行初始化。您可以使用base
關鍵字來調用基類構造函數。請注意,您也可以使用this
關鍵字在您的班級中調用另一個構造函數。
下面是關於如何做到這一點的例子:
public class BaseClass
{
private string something;
public BaseClass() : this("default value") // Call the BaseClass(string) ctor
{
}
public BaseClass(string something)
{
this.something = something;
}
// other ctors if needed
}
public class SubClass : BaseClass
{
public SubClass(string something) : base(something) // Call the base ctor with the arg
{
}
// other ctors if needed
}
這不僅僅是一個好習慣,它還是編譯器強制執行的要求。 [基礎構造函數會被調用,不管你喜不喜歡。](http://stackoverflow.com/questions/3265958/how-can-i-tell-the-inheriting-class-to-not-call-its- base-class-parameter-less-co) – 2011-03-17 06:15:03
好點...如果你沒有明確地調用特定的ctor,它會調用默認的ctor。 – 2011-03-17 06:16:40
在Flash/AS3中,您可以在子類構造函數中工作,然後在中途調用「super()」來運行基類構造函數,然後在子類構造函數中繼續使用更多代碼。在C#中,在子類構造函數的任何代碼運行之前,您都必須先調用基類構造函數。 – Triynko 2016-01-22 19:51:08
- 1. 如何調用構造函數以及如何調用對象
- 2. C#繼承:當我調用派生類構造函數時如何調用基類構造函數
- 3. 如何使用基類構造函數
- 4. 何時使用構造函數以及何時傳入參數
- 5. 如何在構造函數類擴展時從類調用構造函數?
- 6. 如何以及何時使用構造函數模板?
- 7. Move構造函數調用基類移動構造函數
- 8. C++調用基類構造
- 9. 如何從C++中的模板基類的構造函數調用模板超類的構造函數?
- 10. 基類如何可以禁用派生類的構造函數
- 11. 未調用基類構造函數?
- 12. JavaScript調用基類構造函數
- 13. 調用二級基類構造函數
- 14. 構造函數如何在C++中選擇一個基類構造函數
- 15. 如何防止用Moq調用基類構造函數?
- 16. C++:如何使用多個參數調用基類構造函數?
- 17. 如何識別該函數是類構造函數,以及如何將其作爲函數調用?
- 18. C# - 使所有派生類調用基類構造函數
- 19. C++調用子類中的基類構造函數
- 20. 在C++中調用的基類和派生類構造函數
- 21. Java:如何調用子類構造函數內的超類構造函數?
- 22. C++:調用基類的構造函數與計算參數
- 23. C++構造函數調用基於參數類型
- 24. 基類構造函數在派生類構造函數之前真的調用
- 25. 確定一個構造函數調用其基類的構造
- 26. 從基類構造函數調用派生類的虛函數?
- 27. C#調用構造函數
- 28. 構造函數中的調用基構造函數和其他構造函數
- 29. 如何調用父類的構造從孩子的構造函數在C#
- 30. C++模板如何調用的類的構造函數
[在C#中調用基類的構造(可能重複http://stackoverflow.com/questions/12051/calling-base-constructor-in- c)和[C#調用基類構造函數](http://stackoverflow.com/questions/4212624/c-calling-base-class-constructor) – 2011-03-17 06:09:36