C#中是否有办法调用祖父的构造函数?假设我有:
public class A
{
public A(parameterX x)
{
doSomething();
}
}
public class B : A
{
public B(parameterX x) : base(x)
{
doSomethingElse();
}
}
然后我有:
public class C : B
{
}
我希望C中的构造函数在A中调用构造函数,我可以用它来做什么? 是否有类似的东西:
public C(parameterX x) : base : base(x)
或者如何从C中调用A中的构造函数?
感谢。
答案 0 :(得分:4)
你无法调用祖父母班级的构造函数 但是,您也不需要,因为基类已经存在。
当您写public C(parameterX x) : base(x)
时,它会拨打B(x)
,然后拨打A(x)
。
一般情况下,由于你的基类构造函数总是会调用它的基本构造函数(你的祖父母),因此能够显式调用祖父项构造函数是没有意义的,因为这最终会构造它两次。
答案 1 :(得分:1)
虽然我真的不明白你想做什么,你可能会想出更好的实际设计,你可以通过在B中添加另一个将Bar参数作为A的构造函数来实现你所需要的。 ,但是在它只是调用A(Bar)构造函数时什么都不做,那样当你做C(bar)时:base(bar)它将转到B然后转到A.丑陋地狱。