【问题标题】:C# do const fields use less memory?C# const 字段使用更少的内存吗?
【发布时间】:2009-11-30 10:56:54
【问题描述】:

const 字段是否比常规变量使用更少的内存?

【问题讨论】:

    标签: c#


    【解决方案1】:

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

    【讨论】:

    • 这是一个相当具有误导性的答案。常量“像静态变量一样存在于一个副本中”。事实上,只要在代码中引用了 const 字段,编译器就会在生成的 IL 中嵌入常量的
    • 这意味着如果您有一个大的const 字段(即,一个字符串)被多次引用,那么它可能会比等效的@987654323 使用更多 内存@字段。
    • 在实践中,您通常不应该担心这些微优化。如果该字段是真正不变的常量,则使用const;如果不是,请不要。
    • Luke,你能解释一下为什么多次使用常量字符串会占用更多内存吗?你有关闭常量字符串实习的习惯吗?
    • 我不知道如何回答您的问题。也许事实清单会有所帮助。常量字符串在生成的代码中由元数据标记表示,该标记给出用户字符串表的偏移量。元数据标记是一个整数。使用常量字符串二十次与使用常量整数二十次完全相同;您一遍又一遍地使用相同的令牌。用户字符串表中的字符串是 interned。这些事实是否回答了您的问题?
    猜你喜欢
    • 2021-02-11
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    • 2021-12-22
    • 2021-10-09
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多