在同一类中调用构造函数和调用基础构造函数的构造函数(C#)

4
我有一个继承自类B类A类B有以下构造函数:
public class B
{
    public B(int num) { ... }
}

A有一个默认构造函数。 是否有一种方法在class A中实现一个构造函数,该构造函数调用来自class B基础构造函数并调���class A中的默认构造函数? 可以使用basethis来实现此目的:

public class A : B
{
    public A() { ... }

    public A(int num) : base(num), this()
    { ... }
}

如果有东西直接调用A()构造函数怎么办?您建议根本不调用基类构造函数? - Damien_The_Unbeliever
1
这是你在寻找的吗 => https://dev59.com/X2sz5IYBdhLWcg3w6MRS#7575773 - Gehan Fernando
这是不可能的。你不能同时将构造函数链接到多个其他构造函数,除非基类(在你的情况下为 B)只有一个无参数构造函数,派生类 A 的构造函数最终必须链接到特定的构造函数。 - Zohar Peled
2个回答

6
你的代码无法编译:因为public A()无法调用基类B(int num)构造函数(应该传递什么作为num?)。
你可以将逻辑从A()移至A(int num),并使用构造函数链接来实现A()
public class A : B
{
    public A(): this(0) {} //TODO: provide default num here

    public A(int num) : base(num)
    { 
        //TODO: implement logic here
    }
}

-1
你可以像这样使用静态构造函数。
public class B
    {
        public B(int num)
        {
            Console.Write("B");
        }
    }

    public class A : B
    {
        static A()
        {
            Console.Write("A");
        }

        public A(int num) : base(num)
        {

        }
    }

6
静态构造函数不能替代实例构造函数,它只能实例化静态成员。 - Zohar Peled

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接