這個常見錯誤有很多答案,但我看過的答案並沒有解決這個具體問題。 我有以下繼承;類有錯誤「沒有任何參數對應於所需的
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會有一個隱含的無參構造函數,我認爲它會默認爲基類的構造函數簽名。但是現在我意識到從多個基地繼承時不起作用。我如何標記這適用於審覈?我無法用答案將其刪除。 –