【问题标题】:What memory is for the constants defined in a method?方法中定义的常量的内存是多少?
【发布时间】:2011-06-12 04:04:53
【问题描述】:

谁能描述一下(从内存管理的角度)在 .Net 的方法中定义常量时会发生什么?

【问题讨论】:

  • 在运行时它们存储在堆内存中,因为它们在整个执行过程中都存在,并且不会被垃圾回收。

标签: c# .net methods


【解决方案1】:

常量通常在编译时解析并直接插入到指令序列中。示例:

const int A = 10;
int b;

int i = A + b;

将有效地编译成:

int i = 10 + b;

对于字符串,它们将被保留并放入堆中。

【讨论】:

    【解决方案2】:

    当编译器在 C# 源代码中遇到常量标识符时,它会将文字值直接替换为它生成的中间语言 (IL) 代码,因为在运行时没有与常量关联的变量地址引用并且不能作为左值出现在表达式中。如需更多信息,您可以在 Msdn 上查看Constants

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-02
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      • 1970-01-01
      • 2012-11-02
      • 2014-11-30
      相关资源
      最近更新 更多