更改参数时覆盖方法

Override methods when altering parameters

当我更改/添加参数到方法后,我还需要使用 override 关键字吗?

例如,我将重写 ToString() 如下:

public override ToString()
{
  // Implementation details
}

但是,如果我还有以下重载示例,是否需要使用override

public override ToString(String header)
{
  // Implementation details including use of header parameter
}

事实上,甚至建议在 ToString() 中执行此操作吗?还是我应该让 ToString() 不受参数依赖?

谢谢, 杰克

不,你没有。那是重载,而不是覆盖,因此放入 override 将导致编译错误,因为找不到具有匹配签名的方法来覆盖。

覆盖用于覆盖父级上的虚拟方法class。方法的签名必须匹配:参数、return 类型等。C# 规范中的第 1.6.6.4 节有更多详细信息。

不,您不必覆盖 ToString(String header),因为 System.Object(.NET 中所有类型的基础对象)不包含这样的方法。另一方面,它有一个名为 ToString 的虚方法,它不接受任何参数。

你想要的是一个同名不同签名的方法。这称为方法重载。