我只是在谈论如何最好地组织这里的继承.我有一个类(下面)需要使用基本的ExportData类中的大多数类,并覆盖其中的一些类:
public class ExtendedExportData : ExportData
{
private tData _Data;
private ResStrings _diaStrings;
public ExtendedExportData(tData Data, ResStrings diaStrings)
: base(tData, diaStrings)
{
_tData = Data;
_diaStrings = diaStrings;
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下不需要的是必须调用基础构造函数,因为上面类中使用的基类方法都不需要初始化,构造函数只是在为其他(冗长)创建基类实例时才需要的.目的.
如果我删除基本构造函数我在子类构造函数上得到一个错误,说基本构造函数不接受0参数.我怎么能避免这个?
这是基类:
public class ExportData
{
private tData _Data;
private ResStrings _diaStrings;
public ExportLines(tData Data, ResStrings diaStrings)
{
_Data = Data;
_diaStrings = diaStrings;
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
始终使用基类的构造函数 - 但是当基类没有显式定义的构造函数时,C#将自动生成一个公共无参数构造函数.
类似地,如果: base(...)在派生类中没有明确提及,C#假定您要使用基类的无参数构造函数.
一旦定义了构造函数,就不再自动生成无参数构造函数,因此您必须调用: base(...).
您可以通过向基类添加这样的构造函数来轻松地更改它:
public class ExportData
{
protected ExportData()
{
}
}
Run Code Online (Sandbox Code Playgroud)
通过使此构造函数受到保护,只有继承的类ExportData才能使用此构造函数,并且它们不再需要包含: base(...).
| 归档时间: |
|
| 查看次数: |
818 次 |
| 最近记录: |