2012-08-10 55 views
0

我在尋找類使用基本方法,具有:目的衍生

protected override void OnMouseEnter(MouseEventArgs e) 
{ 
    base.OnMouseEnter(e); //necessary? 
    if (...) 
} 

現在,問題是,爲什麼基類的方法被稱爲?無論如何,這段代碼仍然可以工作。任何想法?

謝謝。 Amit

+0

取決於基類的功能。也許它什麼都不做。也許它會設置/更改稍後在代碼中使用的一些成員變量 – Gir 2012-08-10 00:33:11

回答

3

當您想要利用基本實現的功能,但希望擴展派生類實現中發生的情況時,會使用基本調用。

這可以做一些非常有用的事情,比如設置基類中定義的屬性或處理事件,而不必在每個派生類中放置樣板代碼。

2

因爲基類方法有默認的行爲,您可能還想利用它。

1

根據基類的不同,也可能需要執行其方法才能按預期運行。調用基本代碼以及它可能是重要的,特別是如果你不知道它是什麼的話。

1

它很大程度上取決於你要做什麼事件處理程序。如果你的基類很複雜,並且它在OnMouseEnter()中做了很多你仍想保留的東西,那麼你應該有這個base.OnMouseEnter(e)調用。如果你想徹底「覆蓋」這個功能,這意味着你知道base.OnMouseEnter(e)做什麼,而你不想要它,那麼不要叫base.OnMouseEnter(e)