这个常见错误有很多答案,但我看过的答案并没有解决这个具体问题。 我有以下继承;类有错误“没有任何参数对应于所需的
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?我会想如果我没有重写继承的构造函数,我不必再次定义它。 如果一个类没有定义构造函数,则假定存在一个无参数的构造函数。然而,如果它从具有参数化构造函数的类继承,那么不应该这样做吗?
构造函数是不是在C#继承 – DavidG
你的问题正是与标记的副本相同。只需用'B'替换'C',用'A'替换'B'。你的'C'试图调用'B'中唯一的构造函数,它需要一个'id'(和'name'和'parameters'),但是'C'没有提供''''。因此错误。你必须传递值,或者在'B'中放置一个无参数的构造函数(如标记的副本所述)。 –
@PeterDuniho谢谢。我没有意识到C会有一个隐含的无参构造函数,我认为它会默认为基类的构造函数签名。但是现在我意识到从多个基地继承时不起作用。我如何标记这适用于审核?我无法用答案将其删除。 –