静态只读与常量

我读过关于conststatic readonly字段的内容。 我们有一些只包含常量值的类。 用于我们系统中的各种事物。 所以我想知道我的观察是否正确:

这些常量值是否应该是公开的static readonly ? 并且只使用const来表示内部/保护/私有值?

你有什么建议? 我应该甚至可能不使用static readonly字段,而是使用属性也许?


公共静态只读字段有点不寻常; 公共静态属性(只有一个get )会更普遍(也许由一个私有静态只读字段支持)。

Const值直接烧入呼叫站点; 这是双刃:

  • 如果该值在运行时(可能来自配置)获取,则无用
  • 如果你改变一个const的值,你需要重建所有的客户端
  • 但它可以更快,因为它避免了方法调用...
  • 无论如何,它有时可能已被JIT内联
  • 如果该值永远不会改变,那么const是很好的 - Zero等等产生合理的常量; -p除此之外,静态属性更常见。


    如果消费者在不同的程序集中,我会使用static readonly 。 在两个不同的程序集中使用const和消费者是在脚下拍摄自己的好方法。


    其他一些事情

    const int a

  • 必须初始化
  • 初始化必须在编译时
  • 只读int a

  • 可以使用默认值,而不需要初始化
  • 初始化可以在运行时
  • 链接地址: http://www.djcxy.com/p/3569.html

    上一篇: Static readonly vs const

    下一篇: Best way to repeat a character in C#