[英]Should I call the base class implementation when overriding a method in C# for ASP.NET?
我知道重寫方法/函數會從其在基類中的實現重新定義其在派生類中的實現。
現在讓我感到困惑的是,如果我在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*/
}
隨你(由你決定。 通常,您希望調用基類方法,因為它可能會執行很多您不了解的事情(尤其是在您無法控制的類中。得到它嗎?控制。)但是,如果您非常有信心,不需要(或不想)基類“東西”發生,您可以刪除該調用。
這只是您要完全替換行為還是添加行為的問題。
對於諸如CreateChildControls之類的東西,您可能會保留對基類的調用。
這取決於您想做什么。 如果要調用base.CreateChildControls()方法,然后要在調用該方法之前或之后執行一些自定義操作,則可以這樣做。
如果要完全控制調用CreateChildControls時發生的情況,則可以完全忽略調用它。
默認情況下它存在於其中只是為您提供了一些指導。
這取決於您是否要替換或完成基本實現...在大多數情況下,您應該調用基本實現(對於CreateChildItems
方法,您肯定應該執行此操作...)
您可能需要看一下模板方法模式。 盡管您對庫類的實現方式無法做任何事情,但這可能有助於您確保編寫的代碼易於正確使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.