public static const string Var1 = "abc";//compile time error
public static readonly string Var2 = "def";
为什么我们不能将常量定义为 static ?
常量已经是静态的,所以这将是多余的并且在编译时被解析。
例如:
const X = 5;
int a = X + X;
基本上结束为:
int a = 5 + 5;
但是,编译器优化器会弄清楚并实际发出 10。
请参阅此处了解更多信息 - http://msdn.microsoft.com/en-us/library/ms173119(v=vs.80).aspx
一个const
字段已经是 static
.
在您使用它的任何地方,它的字面值都嵌入在生成的 IL 中。在声明点
添加关键字将是多余的。static
尽管不能将字段声明为
static const
,但const
字段的行为本质上是静态的。它属于类型,而不是类型的实例。因此,可以使用与静态字段相同的 ClassName.MemberName 表示法来访问 const 字段。不需要对象实例。