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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我们不能将常量定义为静态变量? [重复]相关的知识,希望对你有一定的参考价值。

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;

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

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

另一答案

一个const字段已经 static。无论您在何处使用它,其字面值都会嵌入到生成的IL中。在声明时添加static关键字将是多余的。

另一答案

来自Static Classes and Static Class Members (C# Programming Guide)

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

以上是关于为什么我们不能将常量定义为静态变量? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java中常量小知识

Java中的静态最终变量[重复]

java中常量和变量的区别?

php之常量

Swift 2.0学习笔记(Day 6)——哎呀常量和变量都该什么时候用啊?

java为什么非静态内部类中不能有static修饰的属性,但却可以有常量?