问题描述
我们再重写一个父类的方法时,VS自动生成的方法存根总会默认一些代码,譬如我现在要写一个控件,重写Control类的Render方法,VS默认会生成的代码如下:protectedoverridevoidRender(HtmlTextWriterwriter){base.Render(writer);}我想问一下这里的base.Render(writer);是不是必须要加的啊,我不加也可以啊。在什么情况下必须要加上,如果加上的话,自己重写的代码应该放在这句的前面还是后面???谢谢
解决方案
解决方案二:
只是默认执行父类的方法既然override了你怎么写都行哪怕只是helloworld呢
解决方案三:
base.Render(writer);调用父类的被重写的方法一般写自定义控件都是扩展功能,需要加上
解决方案四:
但是我试过了,不加也没有影响?有人能详细解释一下吗
解决方案五:
在什么情况下必须要加上,如果加上的话,自己重写的代码应该放在这句的前面还是后面???==一般都要加,因为一般我们总是要使用父类的功能自己重写的代码应该放在这句的后面
解决方案六:
看你实际需要了
解决方案七:
一般需要加,加了才能实现父类功能!一般我们写总是希望增加一些父类没有的功能的,显然还希望保留父类基本功能
解决方案八:
前后都可以
解决方案九:
Render()被你重写了,里面的执行内容随便你写什么.
解决方案十:
引用2楼xhan2000的回复:
base.Render(writer);调用父类的被重写的方法一般写自定义控件都是扩展功能,需要加上
解决方案十一:
要不是留Base的方法取决于特定的方法本身,并不能说要或不要。甚至有的时候要或不要、自己代码在前在后功能是不一样的。这要看文档是怎样写的了。比如像WndProc这样的方法如果不调用base.WndProc可能程序都运行不起来了。要看文档,文档!
解决方案十二:
主要看你想实现什么功能,如果不加的话,只实现了你写代码的那里的功能,而不能用他父类的方法
解决方案十三:
1.单从override角度来说,他是itdependson的,主要看基类方法的说明。2.在ASP.NET领域的override比如扩展Control,Page.OnLoad/OnInit都要调用父类的方法,否则会带来意想不到的结果(与ASP.NET声明周期有关),这是MSDN文档以说明的。