C# - 使所有派生类调用基类构造函数

标签 c# inheritance constructor

我有一个基类 Character,它有几个派生自它的类。基类有各种字段和方法。

我所有的派生类都使用相同的基类构造函数,但如果我不在派生类中重新定义构造函数,我会得到错误:

错误:“子类”类不包含采用此数量参数的构造函数

我不想在每个派生类中重新定义构造函数,因为如果构造函数更改,我必须在每个类中更改它,请原谅任何误解,这与只编写一次代码的想法背道而驰?

最佳答案

您可以使用以下语法从派生类调用基类构造函数:

public DerivedClass() : base() {
    // Do additional work here otherwise you can leave it empty
}

这将首先调用基本构造函数,然后它将在派生构造函数中执行任何其他语句(如果有的话)。

请注意,如果基础构造函数接受参数,您可以这样做:

public DerivedClass(int parameter1, string parameter2) 
    : base(parameter1, parameter2) {
    // DerivedClass parameter types have to match base class types
    // Do additional work here otherwise you can leave it empty
}

您可以在以下页面中找到有关构造函数的更多信息:

https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/using-constructors

In a derived class, if a base-class constructor is not called explicitly by using the base keyword, the default constructor, if there is one, is called implicitly.

关于C# - 使所有派生类调用基类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4296888/

相关文章:

c++ - 使用花括号初始化 std::vector 使用初始值设定项列表

c# - 如何使用带进度条的 ASP.NET MVC4 Web Api 上传大文件

c++ - C++中模板类型中的类层次结构

c++ - 那么现在 struct 可以有虚函数并支持继承吗?那么与 classes 有什么区别呢?信息隐藏的真正目的是什么?

c++ - (Ab)使用构造函数和析构函数进行副作用不好的做法?备择方案?

PHP - 扩展的 __construct

c# - 操作返回无效状态代码 'BadRequest' - Microsoft.Azure.Management.ResourceGraph

C# 从 XML 文件中读取

c# - 如何在C#程序中使用用Visual C++编写的DLL?

c# - Unity3D - 敌人没有受到伤害