3
public static const string Var1 = "abc";//compile time error
public static readonly string Var2 = "def";

为什么我们不能将常量定义为 static ?

4

3 回答 3

20

常量已经是静态的,所以这将是多余的并且在编译时被解析。

例如:

const X = 5;
int a = X + X;

基本上结束为:

int a = 5 + 5;

但是,编译器优化器会弄清楚并实际发出 10。

请参阅此处了解更多信息 - http://msdn.microsoft.com/en-us/library/ms173119(v=vs.80).aspx

于 2013-05-15T14:42:42.693 回答
4

一个const字段已经 static.
在您使用它的任何地方,它的字面值都嵌入在生成的 IL 中。在声明点
添加关键字将是多余的。static

于 2013-05-15T14:43:13.637 回答
2

静态类和静态类成员(C# 编程指南)

尽管不能将字段声明为static const,但const字段的行为本质上是静态的。它属于类型,而不是类型的实例。因此,可以使用与静态字段相同的 ClassName.MemberName 表示法来访问 const 字段。不需要对象实例。

于 2013-05-15T14:44:41.743 回答