当我为方法更改/添加参数时,是否仍需要使用override
关键字?
例如,我将覆盖ToString(),如下所示:
public override ToString()
{
// Implementation details
}
但是,如果我还有以下重载示例,是否需要使用override
:
public override ToString(String header)
{
// Implementation details including use of header parameter
}
事实上,甚至建议在ToString()中执行此操作?或者我应该保持ToString()不受参数依赖?
谢谢, 千斤顶
答案 0 :(得分:3)
不,你没有。这是一个重载,而不是覆盖,因此放入override
将导致编译错误,因为找不到具有匹配签名的方法。
覆盖用于覆盖父类的虚方法。方法的签名必须匹配:参数,返回类型等。第1.6.6.4节在C#规范中有更多细节。
答案 1 :(得分:0)
不,你不必覆盖ToString(String header)
,因为System.Object
是.NET中所有类型的基础对象,不包含这样的方法。另一方面,它有一个名为ToString
的虚方法,它不带任何参数。
你想要的是一个具有相同名称和不同签名的方法。这称为方法重载。