类有错误"没有给出符合要求的参数

时间:2017-03-16 23:44:12

标签: c#

这个常见错误有很多答案,但我所看到的并没有解决这个具体问题。 我有以下继承;

public class C : B
{
}

public abstract class B : A
{
    public B(string id, string name, JObject parameters) : base(parameters)
    {
    }
}

我收到的错误是;

CS7036  C# There is no argument given that corresponds to the required formal parameter 'id' of B.B(String, String, JObject)

要修复它,VS建议以下构造函数;

public C(string id, string name, JObject parameters):
        base(id, name, parameters) { }

为什么需要C构造函数才能将值传递给B?我原以为如果我没有覆盖继承的构造函数,我不必再次定义它。 如果类没有定义构造函数,则假定将存在无参数的类。但是,如果它继承自具有参数化构造函数的类不应该是假设吗?

2 个答案:

答案 0 :(得分:2)

B只有一个构造函数,即带有三个参数的构造函数。 C目前正在使用其默认构造函数(它没有神奇地获取B的构造函数),可以明确地编写:

public C(): base()
{ }

但是,该基础构造函数不存在。至少你需要使用正确的基础构造函数(现在要求你定义它):

public C(): base(id, name, parameters)
{ }

现在除了你正在使用未声明的变量。你可以只传递那些默认值,但VS会将它们放在C&#39的参数列表中。

答案 1 :(得分:0)

当你在类B上调用基本构造函数时,请回到A类构造函数,这显然与类A的构造函数参数不匹配