C# 如何从子类继承构造函数

C# 如何从子类继承构造函数,c#,C#,我正在写一个抽象基类。我希望从它继承的所有类都继承一个构造函数,该构造函数对所有类都执行相同的操作。这可能吗?在派生类构造函数中,您需要像这样调用基本构造函数: base(param1,param2,...) 如果不显式调用基类构造函数,则将调用基类中的默认构造函数(如果存在)。否则,您将得到一个编译错误。在派生类构造函数中,您需要调用基本构造函数,如下所示: base(param1,param2,...) 如果不显式调用基类构造函数,则将调用基类中的默认构造函数(如果存在)。如果没有,您将

我正在写一个抽象基类。我希望从它继承的所有类都继承一个构造函数,该构造函数对所有类都执行相同的操作。这可能吗?

在派生类构造函数中,您需要像这样调用基本构造函数:

base(param1,param2,...)

如果不显式调用基类构造函数,则将调用基类中的默认构造函数(如果存在)。否则,您将得到一个编译错误。

在派生类构造函数中,您需要调用基本构造函数,如下所示:

base(param1,param2,...)

如果不显式调用基类构造函数,则将调用基类中的默认构造函数(如果存在)。如果没有,您将得到一个编译错误。

使用受保护的构造函数就可以了

public abstract class A
{
 protected A(string v) { V = v; }
 public string V { get; protected set; }
}

public class AA : A
{
 public AA(string v) : base (v) {}
}

使用受保护的构造函数就可以了

public abstract class A
{
 protected A(string v) { V = v; }
 public string V { get; protected set; }
}

public class AA : A
{
 public AA(string v) : base (v) {}
}

如果抽象基类有一个默认构造函数,即没有参数的构造函数,则派生类构造函数将自动调用它,除非它们显式调用基类的另一个构造函数

abstract class B
{
    protected B()
    {
        ...
    }

    protected B(object foo)
    {
        ...
    }
}

class D : B
{
    public D() 
        : base() // not actually necessary, since it's called implicitly
    {
    }

    public D(object foo)
        : base(foo)
    {
    }
}

如果抽象基类有一个默认构造函数,即没有参数的构造函数,则派生类构造函数将自动调用它,除非它们显式调用基类的另一个构造函数

abstract class B
{
    protected B()
    {
        ...
    }

    protected B(object foo)
    {
        ...
    }
}

class D : B
{
    public D() 
        : base() // not actually necessary, since it's called implicitly
    {
    }

    public D(object foo)
        : base(foo)
    {
    }
}

我认为OP试图避免实现具有相同签名的构造函数。您不能在C中继承构造函数。只能像在代码中那样从基调用这些构造函数。我认为这是C最大的失败之一。基类中声明的每个公共方法在派生类中都自动可用,但所有构造函数都需要显式定义。每次我必须编写同一个构造函数来调用基本实现时,我都会诅咒C团队。我认为OP试图避免实现具有相同签名的构造函数。您不能在C中继承构造函数。只能像在代码中那样从基调用这些构造函数。我认为这是C最大的失败之一。基类中声明的每个公共方法在派生类中都自动可用,但所有构造函数都需要显式定义。每次我必须编写同一个构造函数来调用基类实现时,我都会诅咒C团队。如果基类没有默认构造函数,也许你可以用派生类的要求来完成答案。如果基类没有,你可以用派生类的要求来完成答案有一个默认构造函数