更改参数时覆盖方法

时间:2015-02-16 21:25:12

标签: c# string tostring

当我为方法更改/添加参数时,是否仍需要使用override关键字?

例如,我将覆盖ToString(),如下所示:

public override ToString()
{
  // Implementation details
}

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

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

事实上,甚至建议在ToString()中执行此操作?或者我应该保持ToString()不受参数依赖?

谢谢, 千斤顶

2 个答案:

答案 0 :(得分:3)

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

覆盖用于覆盖父类的虚方法。方法的签名必须匹配:参数,返回类型等。第1.6.6.4节在C#规范中有更多细节。

答案 1 :(得分:0)

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

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