[英]What happens if you have :base() in the top class?
我很難理解如果將:base()放在頂級類中會發生什么。 代碼像這樣...
class A {
public A(): this(3) {
Console.Write("1");
}
public A(int x): base() {
Console.Write("{0}", x);
}
}
class B:A {
public B(): this(4) {
Console.Write("3");
}
public B(int x) {
Console.Write("{0}", x):
}
}
class C:B {
public C(int x): base() {
Console.Write("{0}", x):
}
public C(): this(7) {
Console.Write("6");
}
}
class Program {
public static void Main(string[] args) {
C c = new C();
}
我不明白為什么我們需要從頭開始(A類)。 那么輸出是什么?
默認情況下,所有類都繼承自System.Object
類,因此,在頂級類A
添加base()
時,您在調用對象類的構造函數,則不會產生任何結果。
您的頂級類從System.Object
(C#別名object
)隱式繼承。 因此,這基本上調用了object
的默認構造object
。 但是由於無論如何默認都會調用基類的默認構造函數,因此這不會改變任何內容。
所以
public A(int x)
: base()
{
}
和
public A(int x)
{
}
是等效的。
如果基類構造函數具有參數,則必須顯式調用它以傳遞必需的參數。
請參閱: 使用構造函數(C#編程指南)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.