4
我有一個覆蓋基類中的方法的子類。基類的方法有默認參數。我的子類需要在重寫的方法中顯示那些默認參數,儘管它們不需要被選擇。爲什麼我的子類需要用默認參數覆蓋?
public class BaseClass
{
protected virtual void MyMethod(int parameter = 1)
{
Console.WriteLine(parameter);
}
}
public class SubClass : BaseClass
{
//Compiler error on MyMethod, saying that no suitable method is found to override
protected override void MyMethod()
{
base.MyMethod();
}
}
但是,如果我改變我的方法簽名
protected override void MyMethod(int parameter = 1)
甚至
protected override void MyMethod(int parameter)
那麼它是幸福的。我期望它接受一個無參數的方法簽名,然後在調用base.MyMethod()
時允許它使用默認參數。
爲什麼子類的方法需要一個參數?