class BaseClass
{
private int numA;
public BaseClass()
{
Console.WriteLine("基类的无参数构造函数. value:{0}", numA);
}
public BaseClass(int i)
{
this.numA = i;
Console.WriteLine("基类带一个参数的构造函数. value:{0}", numA);
}
}
class ChildClassA : BaseClass
{
private int numB;
public ChildClassA()
{
Console.WriteLine("子类无参数构造函数. value:{0}", numB);
}
public ChildClassA(int i)
{
this.numB = i;
Console.WriteLine("子类带有一个参数的构造函数. value:{0}", numB);
}
public ChildClassA(int i, int j)
:base(i)
{
this.numB = j;
Console.WriteLine("子类带有两个参数的构造函数. value:{0}", numB);
}
}
class ChildClassB : BaseClass
{
private int numB;
public ChildClassB()
{
Console.WriteLine("子类无参数构造函数. value:{0}", numB);
}
public ChildClassB(int i)
{
this.numB = i;
Console.WriteLine("子类带有一个参数的构造函数. value:{0}", numB);
}
public ChildClassB(int i, int j)
:this(i)
{
this.numB = j;
Console.WriteLine("子类带有两个参数的构造函数. value:{0}", numB);
}
}
执行的结果如下:
使用base
基类带一个参数的构造函数. value:2
子类带有两个参数的构造函数. value:4
----------------------------------------
使用this
基类的无参数构造函数. value:0
子类带有一个参数的构造函数. value:2
子类带有两个参数的构造函数. value:4

本文介绍了C#中基类和派生类构造函数的调用机制,通过具体示例展示了如何使用base和this关键字来调用不同类型的构造函数,并给出了执行结果。
935

被折叠的 条评论
为什么被折叠?



