“没有给出与所需的形式参数相对应的参数” - 尝试测试 OOP 继承时

Oct*_*scu 2 c#

我只是想了解继承在 C# 中是如何工作的。(虽然我认为我明白了,但我想尝试做一些实际的事情才能理解)

因此,我一直在尝试创建一个具有属性和构造函数的类,以及另一个继承该类的类。但我收到一个错误,但我似乎不太明白为什么。

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApp2
{
    public class Test
    {
        public int testing { get; }
        public Test(int p)
        {
            this.testing = p;
        }
    }
    public class Test2 : Test {

    }
}
Run Code Online (Sandbox Code Playgroud)
There is no argument given that corresponds to the required formal parameter 'p' of 'Test.Test(int)' for line 15
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我了解发生了什么以及为什么会出现该错误吗?谢谢。

Jon*_*eet 7

TL;DR:构造函数不会被继承。

更长的解释:你的Test2隐式有一个像这样的构造函数:

public Test2() : base()
{
}
Run Code Online (Sandbox Code Playgroud)

...因为你还没有在 中声明任何构造函数Test2。如果您在 中声明任何Test2构造函数,编译器将不会尝试提供隐式构造函数。(您的构造函数将需要调用base(...)提供一个值p

所以你可能想要:

public class Test2 : Test
{
    public Test2(int p) : base(p)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)