这个常见错误有很多答案,但我所看到的并没有解决这个具体问题。 我有以下继承;
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?我原以为如果我没有覆盖继承的构造函数,我不必再次定义它。 如果类没有定义构造函数,则假定将存在无参数的类。但是,如果它继承自具有参数化构造函数的类不应该是假设吗?
答案 0 :(得分:2)
B
只有一个构造函数,即带有三个参数的构造函数。 C
目前正在使用其默认构造函数(它没有神奇地获取B
的构造函数),可以明确地编写:
public C(): base()
{ }
但是,该基础构造函数不存在。至少你需要使用正确的基础构造函数(现在要求你定义它):
public C(): base(id, name, parameters)
{ }
现在除了你正在使用未声明的变量。你可以只传递那些默认值,但VS会将它们放在C&#39的参数列表中。
答案 1 :(得分:0)
当你在类B上调用基本构造函数时,请回到A类构造函数,这显然与类A的构造函数参数不匹配