2016-12-29 60 views
0

我有一個c#程序,我有一些常量變量,我希望在整個程序中都可以訪問。我不需要在任何時候改變它們。如何讓程序的常量變量

我已經嘗試過一個靜態類,並且運行良好。我宣佈了一個'靜態類',並把我的變量作爲'public static'。

問題出現在我想在case語句中使用這些不變變量時。由於這隻接受常量,所以效果不佳。

問題是這樣的:如果我有一個靜態類,它內部沒有靜態變量,這個工作是否也會如此?這是從public staticpublic const

感謝您的幫助。

+0

你試過了嗎? – Stijn

+0

是的,它也可以工作。 –

+0

'static'和'const'不排斥對方。你可以簡單地使用'public const',它會自動靜態的。但當然這取決於財產的類型。 'const'只能編譯時間常量,例如整數或浮點值和字符串,但不包含需要構造的對象。 –

回答

4

是的,const默認爲static

1

這取決於。 Const不能是變量,它們必須是文字。如果你試圖給const賦一個變量,例如你創建的類,那麼你必須保持靜態只讀。如果你的意思是分配一個數字或字符串這樣的文字,那麼const就好了。

舉幾個例子:

public const int Number = 1; // this works; 1 is a literal 
public const int Number = SomeClass.SomeProperty; // this does not work 
public const int Number = SomeClass.SomeConst; // this works 

public const SomeClass Var = new SomeClass(); // does not work 
public const string Var = "test"; // this works as "test" is a literal. 

如果你不使用文字的youre好做的:

public static readonly SomeClass Var = new SomeClass(); 

如果使用的是數字文本的另一種選擇是這基本上是一個靜態類枚舉並增加了一些功能。

public enum MyConstants 
{ 
    VarOne, // defaults to 0 
    VarTwo, // defaults to next number (1) 
    VarThree // defaults to next number (2) 
}