c# – 为什么基类有一个需要0个args的构造函数?

这不会编译:

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) {}
}

对于基础(或替代地,这个)构造函数的参数,可以使用:

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

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

class Derived : Base
{
    public Derived(string s) : base(int.Parse(s, NumberStyles.Any)) {}
}
http://stackoverflow.com/questions/4966231/why-is-it-necessary-for-a-base-class-to-have-a-constructor-that-takes-0-args

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 为什么基类有一个需要0个args的构造函数?