【发布时间】:2011-06-12 04:04:53
【问题描述】:
谁能描述一下(从内存管理的角度)在 .Net 的方法中定义常量时会发生什么?
【问题讨论】:
-
在运行时它们存储在堆内存中,因为它们在整个执行过程中都存在,并且不会被垃圾回收。
谁能描述一下(从内存管理的角度)在 .Net 的方法中定义常量时会发生什么?
【问题讨论】:
常量通常在编译时解析并直接插入到指令序列中。示例:
const int A = 10;
int b;
int i = A + b;
将有效地编译成:
int i = 10 + b;
对于字符串,它们将被保留并放入堆中。
【讨论】:
当编译器在 C# 源代码中遇到常量标识符时,它会将文字值直接替换为它生成的中间语言 (IL) 代码,因为在运行时没有与常量关联的变量地址引用并且不能作为左值出现在表达式中。如需更多信息,您可以在 Msdn 上查看Constants。
【讨论】: