![]() |
1
12
A
|
![]() |
2
13
“const”变量必须具有基元类型(例如int、bool)。每当源代码中出现一个“const”变量(无论是本地变量还是全局变量)时,这个实例就会被const值本身替换。所以:
或者更确切地说:
|
![]() |
3
11
常量不是变量,它实际上也不存储在任何地方。因为它不是存储的,所以它不是实例成员,也不是静态的。 常量只是一个值的名称。编译代码时,会在使用常量的位置插入值(如果使用在不同程序集中声明的常量,则会产生影响。在重新编译使用常量的代码之前,更改常量的声明值不会更改使用的值。)
|
![]() |
4
4
我需要插嘴说,我觉得已经给出的共识答案并不完整。
但是,如果常量“变量”是使用(可能是复杂的)常量表达式声明的,则该答案回避了出现的问题,例如:
在这种情况下,编译器是否评估表达式一次,并将结果存储(用于存储)以重用(如静态变量),或者每次使用标识符执行表达式(如C/C++中的“定义宏”),这就不同了。 在我自己的闲逛中,我发现下面的描述 http://www.techopedia.com/definition/3768/constant-c 这说明了这个问题:
诚然,“内存位置”部分是一种延伸——我认为这意味着const值在编译期间存储在本地的某个地方。如前所述,您不能在代码中访问或引用此内存。否则,这似乎与我在C语言规范中读到的一致:
以及:
欢迎对此“quanser”的任何反馈:^) |
![]() |
5
3
在c#中将局部变量创建为const根本不会创建任何变量或字段,而是将指定的常量值放在方法中使用它的任何地方。 |
![]() |
6
2
本地使用的主要优点
|
![]() |
7
-3
我也把这个贴到 Why can't I declare a constant using var in C#? 不带变量的常量:
具有var的常量(创建后不能更改匿名类型属性值):
|