我在尋找類使用基本方法,具有:目的衍生
protected override void OnMouseEnter(MouseEventArgs e)
{
base.OnMouseEnter(e); //necessary?
if (...)
}
現在,問題是,爲什麼基類的方法被稱爲?無論如何,這段代碼仍然可以工作。任何想法?
謝謝。 Amit
我在尋找類使用基本方法,具有:目的衍生
protected override void OnMouseEnter(MouseEventArgs e)
{
base.OnMouseEnter(e); //necessary?
if (...)
}
現在,問題是,爲什麼基類的方法被稱爲?無論如何,這段代碼仍然可以工作。任何想法?
謝謝。 Amit
當您想要利用基本實現的功能,但希望擴展派生類實現中發生的情況時,會使用基本調用。
這可以做一些非常有用的事情,比如設置基類中定義的屬性或處理事件,而不必在每個派生類中放置樣板代碼。
因爲基類方法有默認的行爲,您可能還想利用它。
根據基類的不同,也可能需要執行其方法才能按預期運行。調用基本代碼以及它可能是重要的,特別是如果你不知道它是什麼的話。
它很大程度上取決於你要做什麼事件處理程序。如果你的基類很複雜,並且它在OnMouseEnter()
中做了很多你仍想保留的東西,那麼你應該有這個base.OnMouseEnter(e)
調用。如果你想徹底「覆蓋」這個功能,這意味着你知道base.OnMouseEnter(e)
做什麼,而你不想要它,那麼不要叫base.OnMouseEnter(e)
。
取決於基類的功能。也許它什麼都不做。也許它會設置/更改稍後在代碼中使用的一些成員變量 – Gir 2012-08-10 00:33:11