以下代码是《Visual C#入门经典》中第175页中的一个实例:public class MyBaseClass
{
public MyBaseClass()
{
}
public MyBaseClass(int i)
{
}
}public class MyDerivedClass:MyBaseClass
{
public MyDerivedClass():this(5,6)
{
} public MyDerivedClass(int i)
{
} public MyDerivedClass(int i,int j):base(i)
{
}
}------
以下面方式实例化MyDerivedClass:
MyDerivedClass myobj = new MyDerivedClass();
------·请长者们说一下这代码的执行顺序,和什么会这么执行?
{
public MyBaseClass()
{
}
public MyBaseClass(int i)
{
}
}public class MyDerivedClass:MyBaseClass
{
public MyDerivedClass():this(5,6)
{
} public MyDerivedClass(int i)
{
} public MyDerivedClass(int i,int j):base(i)
{
}
}------
以下面方式实例化MyDerivedClass:
MyDerivedClass myobj = new MyDerivedClass();
------·请长者们说一下这代码的执行顺序,和什么会这么执行?
public MyDerivedClass(int i,int j):base(i)
public MyBaseClass(int i)
MyBaseClass(int i)->MyDerivedClass(int i,int j):base(i)->MyDerivedClass():this(5,6)
public MyDerivedClass(int i,int j):base(i)
public MyBaseClass(int i)
public MyBaseClass()去看一下base,这就是调用基类的构造函数
public MyDerivedClass(int i,int j):base(i)
public MyBaseClass(int i)
public MyBaseClass()就是这样的~
最后调用基类的单参数构造函数。
这里的this指代类本身,base指代类的基类。
MyBaseClass(int i)->MyDerivedClass(int i,int j):base(i)->MyDerivedClass():this(5,6)
------
以下是书上的答案,请长者们耐心的为我解释一下?System.Object.Object()
MyBaseClass.MyBaseClass(int i)
MyDerivedClass.MyDerivedClass(int i,int j)
MyDerivedClass.MyDerivedClass()
System.Object.Object()->MyBaseClass(int i)->MyDerivedClass(int i,int j):base(i)->MyDerivedClass():this(5,6)这里还有一个知识点,就是重载的运用。
MyDerivedClass(int i,int j):base(i)
MyDerivedClass()
MyDerivedClass myobj = new MyDerivedClass(4,8);
MyDerivedClass myobj = new MyDerivedClass(4,8);
---
根据上述实例化的方法,请您重解一下执行的过程,书中对 base 和 this 关键字的解释有些模糊希望您能结合这个例子,阐述一下!有劳您了~
因为:base(i),会先调用MyBaseClass的public MyBaseClass(int i),然后执行public MyDerivedClass(int i,int j)中的代码.
至于为什么这么执行,你去问微软的程序员吧!this是调用自己的构造函数,BASE是调用基类的构造函数