【发布时间】:2019-11-30 00:08:32
【问题描述】:
我知道如何为同一个类或基类的构造函数调用另一个构造函数,但是我怎样才能同时做到这两个呢?这是我希望实现的示例,并指出在实际情况下,我们可能想做一些比设置属性更复杂的事情:
public class BaseClass
{
public BaseClass(object param)
{
// base constructor
}
}
public class DerivedClass
{
DateTime Date { get; private set; }
public DerivedClass()
{
Date = GenerateDate();
}
public DerivedClass(object param) : base(param)
{
// How do I make it call DerivedClass() ?
}
}
【问题讨论】:
-
这看起来像 Basic Constructor Chaning:
public DerivedClass() : this(someDefaultForTheParam)或public DerivedClass(object param) : this()。我不确定结合基类调用和链接操作的顺序,但毕竟只有两个选项。 -
很确定你不能在一个派生自一个没有一个类的类上使用无参数构造函数......你必须使它成为
BaseClass(object param = null)或类似的东西。 -
用方法包装公共语言并从两个构造函数调用方法
-
在实际情况下,我们可能想做一些比设置属性更复杂的事情 - 这可能是一个好兆头,可能更复杂的事情可以提取到自己的方法中/类
-
@HereticMonkey: “你不能在一个派生自一个没有参数的类上使用无参数构造函数”——严格来说不是这样。这很困难,因为通常基类的参数将由客户端代码提供。但是如果派生类有合理的方式给基类提供参数,那它当然可以声明一个无参构造函数。
标签: c# constructor base