假设我的 C# 程序中有以下基类和派生类:
class BaseClass
{
public BaseClass() { }
public BaseClass(int someVal)
{
// do something here
}
}
class DerivedClass : BaseClass
{
public DerivedClass(string somethingNew)
: base()
{
// do something with the somethingNew varible
}
public DerivedClass(string somethingNew, int someVal)
: base(someVal)
{
// do **THE SAME THING** with the somethingNew varible as in first constructor
}
}
我的问题出现在最终的构造函数中 - 理想情况下,我希望能够按照以下方式做一些事情(尽管这不会编译):
public DerivedClass(string somethingNew, int someVal)
: base(someVal)
: this(somethingNew)
{
}
换句话说,同时调用 base
和第一个构造函数。
有什么办法可以做到这一点,还是我只需要在这种情况下重写每个构造函数中的代码?
谢谢!!
最佳答案
并不是说这是正确的答案(我很想听听其他人会如何推荐我这样做),但我最终做的是创建一个私有(private) setter 方法,构造函数可以按照以下几行调用该方法:
class DerivedClass : BaseClass
{
public DerivedClass(string somethingNew)
: base()
{
setVals(somethingNew);
}
public DerivedClass(string somethingNew, int someVal)
: base(someVal)
{
setVals(somethingNew);
}
private setVals(string somethingNew)
{
// do something with the somethingNew varible
}
}
它解决了我不得不处理重复代码的问题,并且似乎是执行此操作的最干净的方法,但是,正如我所说,我很想看看其他人推荐什么/如果有更好的方法。
谢谢!!!
关于C# - 在派生类中调用基类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36136699/