C#do const字段使用更少的内存?

JL.*_*JL. 5 c#

const字段使用的内存少于常规变量吗?

小智 5

Const 字段的内存消耗取决于其使用情况。const 字段的值在编译期间嵌入到 IL 代码中。如果没有对 const 字段的单个引用,则不会消耗内存。当有很多对 const 字段的引用时,内存使用量可能会成倍增加,具体取决于当前驻留在内存中的代码部分。

  • 在实践中,您通常不必担心这些微观优化。如果该字段是真正不变的常量,则使用“const”;如果不是,那就不要。 (6认同)
  • 我不知道如何回答你的问题。也许列出事实会有所帮助。常量字符串在生成的代码中由元数据标记表示,该元数据标记给出了用户字符串表的偏移量。元数据标记是一个整数。使用常量字符串二十次与使用常量整数二十次完全相同;你一遍又一遍地使用同一个令牌。用户字符串表中的字符串被保留。这些事实能回答你的问题吗? (4认同)
  • 这是一个相当具有误导性的答案。常量*不*“像静态变量一样存在于一份副本中”。事实上,每当代码中引用“const”字段时,编译器都会将该常量的“值”嵌入到生成的 IL 中。 (3认同)
  • Luke,你能解释一下为什么多次使用常量字符串会占用更多内存吗?您是否有关闭常量字符串实习的习惯? (3认同)
  • 这意味着,如果您有一个被多次引用的大型“const”字段(即字符串),那么它可能会比等效的“static”字段使用“更多”内存。 (2认同)