主题:看过C#入门经典(第三版)的高手请进
在书中176页构造函数的执行序列中例子如下:
public class MyBaseClass
{
public MyBaseClass()
{
Console.WriteLine("MyBaseClass()");
}
public MyBaseClass(int i)
{
Console.WriteLine("MyBaseClass(int i)");
}
}
public class MyDerivedClass : MyBaseClass
{
public MyDerivedClass()
{
Console.WriteLine("MyDerivedClass()");
}
public MyDerivedClass(int i)
{
Console.WriteLine("MyDerivedClass(int i)");
}
public MyDerivedClass(int i, int j)
{
Console.WriteLine("MyDerivedClass(int i,int j)");
}
}
class Program
{
static void Main(string[] args)
{
MyDerivedClass myObj = new MyDerivedClass(4);
Console.ReadKey();
}
}
其中每个类中的构造函数输出语句是我加上去的,目的是看他们的执行顺序。
这个例子我在运行时的输出结果为:
MyBaseClass()
MyDerivedClass(int i)
也就是说先执行System.Object.Object()构造函数,再执行MyBaseClass.MyBaseClass()构造函数,最后执行MyDerivedClass.MyDerivedClass(int i)构造函数。
但是书上给的说第二步的是执行MyBaseClass.MyBaseClass(int i)构造函数,而不是MyBaseClass.MyBaseClass()构造函数。
用同样的方法验证用base和this关键字时,也和我想象的结果不一样。
请各位高手能否解释一下不知为什么会这样,先谢谢了。
public class MyBaseClass
{
public MyBaseClass()
{
Console.WriteLine("MyBaseClass()");
}
public MyBaseClass(int i)
{
Console.WriteLine("MyBaseClass(int i)");
}
}
public class MyDerivedClass : MyBaseClass
{
public MyDerivedClass()
{
Console.WriteLine("MyDerivedClass()");
}
public MyDerivedClass(int i)
{
Console.WriteLine("MyDerivedClass(int i)");
}
public MyDerivedClass(int i, int j)
{
Console.WriteLine("MyDerivedClass(int i,int j)");
}
}
class Program
{
static void Main(string[] args)
{
MyDerivedClass myObj = new MyDerivedClass(4);
Console.ReadKey();
}
}
其中每个类中的构造函数输出语句是我加上去的,目的是看他们的执行顺序。
这个例子我在运行时的输出结果为:
MyBaseClass()
MyDerivedClass(int i)
也就是说先执行System.Object.Object()构造函数,再执行MyBaseClass.MyBaseClass()构造函数,最后执行MyDerivedClass.MyDerivedClass(int i)构造函数。
但是书上给的说第二步的是执行MyBaseClass.MyBaseClass(int i)构造函数,而不是MyBaseClass.MyBaseClass()构造函数。
用同样的方法验证用base和this关键字时,也和我想象的结果不一样。
请各位高手能否解释一下不知为什么会这样,先谢谢了。