2010-04-28 241 views
16

我遇到了一個非靜態的類,但所有的方法和變量都是靜態的。例如:爲什麼所有靜態方法/變量都在非靜態類中?

public class Class1 { 

    private static string String1 = "one"; 
    private static string String2 = "two"; 

    public static void PrintStrings(string str1, string str2) 
    { 
     ... 

所有變量在所有實例中都是靜態的,所以沒有必要具有單獨的類實例。

是否有任何理由創建這樣的類?

回答

5

編號使其成爲一個靜態類。

17

這個類是在.NET 1.x天寫回來的嗎?靜態類直到C#2.0纔出現。

+5

在我的經驗中,即使使用.NET 2.0或更高版本,許多開發人員也忘記在這樣的類上使用該關鍵字! – 2010-04-28 11:06:41

+1

哎呀,連Visual Studio都忘了!當您開始一個新的控制檯應用程序時,請查看「Program」課程! – 2010-04-28 11:10:11

0

不,如果類中沒有實例成員,那麼它應該是靜態的。

4

不。有些人沒有意識到類本身可以是靜態的,所以不要包含在類定義中。這很有用,因爲它提供了更好的智能感知選項並確保將來的方法靜態添加。

這也隱含地封閉了班級。

1

靜態類提供:

  • 只包含靜態成員。

  • 無法實例化。

  • 密封。

  • 不能包含實例構造函數。

因此,創建靜態類基本上與創建僅包含靜態成員和私有構造函數的類相同。

+0

它不能與「創建僅包含靜態成員和私有構造函數的類」相同,因爲這樣的類需要實例化。靜態類不會。 – CJ7 2010-04-28 13:01:55

+0

@克雷格你是對的。我更新了自己:) – Rajesh 2010-04-28 14:54:49

相關問題