编译时间'const'是什么意思?

for*_*yez 10 c#

他们说readonly和const之间的区别在于const是编译时(readonly是运行时).但究竟是什么意思呢,这是编译时间的事实?一切都被编译成字节码不是吗?

Noo*_*ilk 17

这意味着const变量被写入它们所引用的位置.所以,假设你有一个2库,一个带const变量:

// Library A
const int TEST = 1;

// Library B
void m ()
{
   Console.WriteLine(A.TEST);
}
Run Code Online (Sandbox Code Playgroud)

该变量实际上是在编译时写入B.不同的是,如果重新编译A而不是 B,则B将具有"旧"值.readonly变量不会发生这种情况.


Ego*_*hin 12

它只是意味着标记为的成员的每个实例const在编译期间都将被其值替换,而readonly成员将在运行时被解析.

  • 它还意味着`const`变量仅限于可以表示为编译时文字的值 - 没有复杂的对象. (3认同)