public static const string Var1 = "abc";//compile time error
public static readonly string Var2 = "def";
爲什麼我們不能將一個常量定義爲靜態?爲什麼我們不能將常量變量定義爲靜態變量?
public static const string Var1 = "abc";//compile time error
public static readonly string Var2 = "def";
爲什麼我們不能將一個常量定義爲靜態?爲什麼我們不能將常量變量定義爲靜態變量?
常量已經是靜態的,所以這將是多餘的,並在編譯時解析。
例如:
const X = 5;
int a = X + X;
基本上編譯爲:
int a = 5 + 5;
在這裏看到更多的信息 - http://msdn.microsoft.com/en-us/library/ms173119(v=vs.80).aspx
一個const
領域已經是static
。
無處不在您使用它,它的文字值嵌入在生成的IL中。
在聲明處添加static
關鍵字將是多餘的。
啊,所以如果一個'public static readonly int'和一個'public const int'都被第二個程序集引用。如果只有聲明程序集重新編譯了值更改,它們將在值更改時顯示不同的行爲。 – weston
從Static Classes and Static Class Members (C# Programming Guide):
雖然現場不能被聲明爲
static const
,一個const
場是在它的行爲基本上是靜態的。它屬於類型,而不屬於類型的實例。因此,可以使用用於靜態字段的相同ClassName.MemberName表示法來訪問const字段。沒有對象實例是必需的。
你爲什麼想要? – dbasnett
另外,有這樣一個事物作爲「常量變量」的想法是自相矛盾的。 「常量」和「變量」是相反的。 –