读书人

在派生类中调用基类构造函数,该怎么处

发布时间: 2011-12-30 23:30:45 作者: rapoo

在派生类中调用基类构造函数
在派生类中调用基类构造函数。
// keywords_base2.cs
using System;
public class BaseClass
{
int num;

public BaseClass()
{
Console.WriteLine( "in BaseClass() ");
}

public BaseClass(int i)
{
num = i;
Console.WriteLine( "in BaseClass(int {0}) ", num);
}
}

public class DerivedClass : BaseClass
{
// 该构造器调用 BaseClass.BaseClass()
public DerivedClass() : base()
{
}

// 该构造器调用 BaseClass.BaseClass(int i)
public DerivedClass(int i) : base(i)
{
}

static void Main()
{
DerivedClass dc = new DerivedClass();
DerivedClass dc1 = new DerivedClass(1);
}
}

/**//*
控制台输出:
in BaseClass()
in BaseClass(1)
*/


如果我在 // 该构造器调用 BaseClass.BaseClass()
public DerivedClass() : base()
{
}

我发现 public DerivedClass() : base()
{
}
和 public DerivedClass()
{
}
功能一样,那么base()在这里还有什么用????
难道不生成基类,可以生成子类吗,c#好像没有这个功能,所有必须要调用基类的构造函数

[解决办法]
如果没有明确指明base,编译器会自动添置调用基类的默认构造器,即不带参数的那个,所以

public DerivedClass() : base()


里面的base()是多余的

读书人网 >C#

热点推荐