我明白覆盖方法/函数重新定义它的实现在从它在基类实现派生类。
现在什么混淆我,是,如果我重写ASP.NET类如CreateChildControls()
我把它随机无特殊原因),VS2008自动生成:
protected override void CreateChildControls()
{
base.CreateChildControls();
}
够好,默认的实现只是调用基类CreateChildControls()
所以,如果我想运行一些代码,因为我不知道该怎么base.CreateChildControls()
我应该这样做:
protected override void CreateChildControls()
{
/*My Code Here*/
base.CreateChildControls();
}
或者,忽略什么base.CreateChildControls()
干脆就去做
protected override void CreateChildControls()
{
/*My Code Here*/
}
That's up to you. Generally, you want to call the base class method because it might do a lot of stuff you're not privy to (especially in a class you don't control .. get it? Control.) But, if you are very confident you don't need (or want) the base class "stuff" to happen, you can remove the call.
它只是你是否希望完全替代行为或添加行为的问题。
对于类似的CreateChildControls,你可能会保留调用基类。
这取决于你想要做什么。 如果你想被称为base.CreateChildControls()方法,然后你想之前或该方法被调用后执行一些自定义操作,那么你可以这样做。
如果你想有什么发生时的CreateChildControls被调用,那么您可以简单地忽略干脆称它的完全控制。
它是在有默认的事实只是有点为你指导。
这取决于如果你想更换或完成基本实现......在大多数情况下,你应该调用基实现(和你一定要做到这一点的情况下CreateChildItems
方法...)
你可能想看看的模板方法模式。 虽然你不能做的库类的实现方式任何东西,它可以帮助你确保你写的是很容易正确使用的代码。
文章来源: Should I call the base class implementation when overriding a method in C# for ASP.NET?