第三版中第9章P176-P177页,讲述了实例化派生类后,调用构造器的步骤;
e.g:
public class A
{
public A()
{
Console.WriteLine("A无参");
} public A(int i)
{
Console.WriteLine("A有参");
}
} public class B : A
{
public B()
{
Console.WriteLine("B无参");
} public B(int i) : base(i)
{
Console.WriteLine("B有参");
}
}
class Program
{
static void Main(string[] args)
{
B b = new B(222);
Console.ReadKey();
}
}
按照书上所说,应该是先调用System.Object.Object()构造函数
然后应该调用A.A(int i)构造函数;
最后应该调用B.B(int i)构造函数。
但是我通过程序验证的结果是调用A.A()构造函数,也就是默认构造函数,这是怎么回事,书错了还是什么情况。。
e.g:
public class A
{
public A()
{
Console.WriteLine("A无参");
} public A(int i)
{
Console.WriteLine("A有参");
}
} public class B : A
{
public B()
{
Console.WriteLine("B无参");
} public B(int i) : base(i)
{
Console.WriteLine("B有参");
}
}
class Program
{
static void Main(string[] args)
{
B b = new B(222);
Console.ReadKey();
}
}
按照书上所说,应该是先调用System.Object.Object()构造函数
然后应该调用A.A(int i)构造函数;
最后应该调用B.B(int i)构造函数。
但是我通过程序验证的结果是调用A.A()构造函数,也就是默认构造函数,这是怎么回事,书错了还是什么情况。。
{
Console.WriteLine("A有参");
}第二步: public B(int i)
{
Console.WriteLine("B有参");
}
A有参
B有参
没错啊。你怎么会说是a的默认构造呢
{
public B()
{
Console.WriteLine("B无参");
} public B(int i) //: base(i)此处应该没有base关键字
{
Console.WriteLine("B有参");
}
}大家帮我解释下,谢谢啊,看过C#入门经典的