【发布时间】:2016-05-17 17:35:32
【问题描述】:
我有一个看起来像这样的课程:
public class WidgetDao : AbstractDao<Widget>, IWidgetDao
{
public WidgetDao(ISession session)
: base (session)
{
}
}
如果我尝试在如下代码中删除此构造函数,我的代码会出现构建错误:
public IWidgetDao GetWidgetDao()
{
return _widgetDao ?? (_widgetDao = new WidgetDao(_session));
}
我有点理解我得到构建错误的原因......没有明确的WidgetDao 构造函数接受一个参数。但是,WidgetDao 继承自 AbstractDao<Widget>,它确实有一个带有一个参数的构造函数。
我不明白为什么 C# 编译器会在 WidgetDao 上创建一个显式构造函数,而它只是用于将参数传递给基类。
有人可以帮我解释一下吗?
【问题讨论】:
-
“我不明白为什么 C# 编译器会在 WidgetDao 上创建一个显式构造函数,而它只是用于将参数传递给基类。”因为构造函数不是继承的,基本上......并且有充分的理由说明它们不被继承......否则每个类都会以无参数构造函数结束,因为
object有一个无参数构造函数, 例如。基本上,不要尝试删除该构造函数。 -
这很公平。当我到处都有几乎空的构造函数时,我只是对我的代码有点怀疑。感谢您的回复。随时提交它作为答案。
标签: c# constructor