为什么我们不能将常量变量定义为静态?

时间:2013-05-15 14:42:05

标签: c# vb.net

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

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

3 个答案:

答案 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字段。不需要对象实例。