2012-10-29 89 views
0

可能重複:
When to Use Static Classes in C#靜態類或對象

如果對不起這個問題是沒有意義的或愚蠢的我想創建一個窗口服務中,我有幾類文件每類文件有一些調用另一個類文件的函數。

例如

類文件,一個有像

public bool CreateEmail() 
{ 
try 
{ 
//code here 
} 
catch (Exception ex) 
{ 
    //Write to Log 
    to create log call function from **another class file** 
} 
} 

創建電子郵件的方法和更多的電話像this.I想知道如果使用靜態類是好還是創建對象每個類和調用方法將better.Which是推薦的方式?

+4

你應該看看這個問題:[何時在C#中使用靜態類](http://stackoverflow.com/questions/241339/when-to-use-static-classes-in-c-sharp) –

回答

2

問問自己

  • 如何相關的是這個方法將你的對象。
  • 是否改變反正你對象的狀態。

如果它相關並且確實改變了你的對象狀態,那麼你應該在類中有方法。如果不是,那麼你不需要在你的班級有這種方法

從你的情況來看,它很清楚它不會改變任何狀態,而是需要來自另一個對象的一些信息來發送mail.So我肯定會讓這個util類(靜態類),並在需要時使用它。

+0

我喜歡這個答案,很好的解釋! – Jeff

+0

@Codelgnoto很好的解釋..謝謝你的幫助 – Karthik

1

如果你只使用類文件組的方法,並不會被需要的類的實例比調用這些方法以外的其他,那麼你應該使用一個靜態類 - 那他們是什麼。

1

我想知道如果使用靜態類更好或爲每個類創建對象並調用方法會更好。

如果是多線程環境並且日誌記錄需要一些數據在多個調用中共享,請爲每個調用創建單獨的實例。否則,去靜態類和方法。

2

想想:

  1. 你需要做單元測試,如果是的話,靜態類是不好的,不能的情況下,被嘲笑你按照測試能力設計。

  2. Single responsibility principle,不要把每種方法都放到一個所謂的實用程序類。組方法單獨的類這是一起有關,並按照SRP。

  3. 類應該具有有意義的名稱。 實用UTIL幫手是沒有意義的名字