2012-09-07 30 views
0

什麼時候最好通過構造函數而不是方法傳遞參數?傳遞參數構造函數與方法

究竟是什麼讓你想到使用構造函數而不是方法?

+0

構造函數**是**方法(以任何健全的OOP語言...) – 2012-09-07 19:38:57

回答

1

在某些語言(如C#和Java)中,構造函數是唯一可以初始化readonly/final字段的地方。因此,帶參數的構造函數經常與至少部分不可變的類一起使用。 C#中的KeyValuePair <>>類就是一個例子。

還有一些事情要說,以保證對象始終處於有效狀態。如果每次在某個類上調用一個或多個「設置」方法使其有效,那麼在構造函數中進行初始化可以幫助類的使用者避免在未完全初始化時使用該對象。

通過構造函數初始化對象的一個​​主要缺點是,這通常需要您的構造函數帶參數。這可以使得通過反射實例化對象變得困難甚至不可能。因此,許多依賴反射的框架還要求與它們一起使用的類具有無參數構造函數。

最後一點的一個例外是構造函數經常與依賴注入一起使用。在這種情況下,類的構造函數的參數定義了它的依賴關係,從而允許DI框架執行初始化對象的工作。

0

其實作爲名稱指定的構造函數用於創建的東西,

或者,我們可以說,構造函數用於分配內存,

所以,如果你想要做一些特別的東西,在構建時事情 那麼它更好地使用構造函數而不是方法。

相關問題