public static const string Var1 = "abc";//compile time error
public static readonly string Var2 = "def";
为什么我们不能将常量定义为静态?
答案 0 :(得分:19)
常量已经是静态的,因此这将是多余的,并在编译时解析。
例如:
const X = 5;
int a = X + X;
基本上编译为:
int a = 5 + 5;
有关详细信息,请参阅此处 - http://msdn.microsoft.com/en-us/library/ms173119(v=vs.80).aspx
答案 1 :(得分:4)
已经的const
字段 static
无论你在哪里使用它,它的字面值都嵌入在生成的IL中
在声明点添加static
关键字将是多余的。
答案 2 :(得分:2)
来自Static Classes and Static Class Members (C# Programming Guide):
虽然字段不能声明为
static const
,但const
字段的行为基本上是静态的。它属于类型,而不属于该类型的实例。因此,可以使用与静态字段相同的ClassName.MemberName表示法来访问const字段。不需要对象实例。