2012-07-02 69 views
6

System.ServiceProcess.ServiceBase類的構造函數的Microsoft .NET文檔中說:從ServiceBase派生時,是否調用基礎構造函數?

如果重寫基類的構造函數,你應該明確地調用它 在派生類的構造函數。

Using Constructors微軟C#編程指南中,它說:

在派生類中,如果一個基類的構造函數沒有被使用基關鍵字稱爲 明確的,默認的構造函數,如果 有一個,則隱式調用。

那麼我需要顯式調用基礎構造函數嗎?爲什麼?

回答

5

沒關係。這些編譯相同的IL:

public class Service1 : ServiceBase 
{ 
    public Service1() : base() { } 
} 
public class Service1 : ServiceBase 
{ 
    public Service1() { } 
} 

我不知道爲什麼ServiceBase建議顯式調用它。我會同意其他建議,因爲它似乎更有意義。

+0

該文檔的_「覆蓋基類的構造函數」_甚至有意義嗎?就我所知,實例構造函數並不是真的虛擬的,它們也不是被繼承的。但是當然,當基類中只有一個可訪問的實例構造函數時,就沒有什麼可以做錯了(因爲你必須「鏈接」一些基類構造函數)。文檔權限在C#以外的某種.NET語言中可能是有意義的?還是僅僅是純粹的廢話? –

+1

據我所知,這是無稽之談。 –

相關問題