gpt4 book ai didi

c# - 为什么基类必须有一个带 0 个参数的构造函数?

转载 作者:IT王子 更新时间:2023-10-29 04:29:14 25 4
gpt4 key购买 nike

这不会编译:

namespace Constructor0Args
{
class Base
{
public Base(int x)
{
}
}

class Derived : Base
{
}

class Program
{
static void Main(string[] args)
{
}
}
}

相反,我收到以下错误:

'Constructor0Args.Base' does not contain a constructor that takes 0 arguments

这是为什么呢?基类有必要有一个0参数的构造函数吗?

最佳答案

不是 - 问题是它需要调用一些 基础构造函数,以初始化基础类型和默认 就是调用base()。您可以通过在派生类型构造函数中自己指定特定的构造函数(和参数)来调整它:

class Derived : Base
{
public Derived() : base(123) {}
}

对于base(或者this)构造函数的参数,您可以使用:

  • 当前构造函数的参数
  • 文字/常量
  • 静态方法调用(也涉及上述)

例如,以下也是有效的,使用上面的所有三个项目符号:

class Derived : Base
{
public Derived(string s) : base(int.Parse(s, NumberStyles.Any)) {}
}

关于c# - 为什么基类必须有一个带 0 个参数的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4966231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com