如果有的话,我们应该使用const吗?

Fre*_*ool 27 c# const readonly

Const被烘焙到客户端代码中.Readonly不是.但const速度更快.可能只是略有一点.

现在的问题是,是否有过,你应该喜欢的任何场景constreadonly?或者换言之,我们实际上并不总是更好地使用readonly而不是const(记住上述烘焙的东西)?

And*_*ott 30

我相信"const"唯一合适的时间就是当你编写的规范比你正在编写的程序更持久时.例如,如果您正在实现HTTP协议,那么拥有"GET"的const成员是合适的,因为它永远不会改变,并且客户端当然可以将其硬编码到他们编译的应用程序中而不必担心您需要更改价值以后.

如果您有任何机会需要在将来的版本中更改值,请不要使用const.

哦! 除非你已经测量过,否则永远不要认为const比readonly字段快.有JIT优化可能使它实际上完全相同.

  • 如果常量比"内部"更公开(或者如果它只是内部但你有InternalsVisibleTo),则允许IL编译器将常量值复制到引用程序集中.这意味着如果您发布新版本并更改常量,则现在与您的消费者不同步. (16认同)
  • “如果您有任何机会需要在未来版本中更改该值,请不要使用 const。” 我不遵循你的逻辑。常量的部分意义在于您可以在未来版本中更改它。 (2认同)

cle*_*tus 15

Const vs readonly:

关于C#中'const'和'readonly'之间差异的简要概述:'const':

  • 不能是静止的.
  • 编译时评估值.
  • 仅在声明时宣传.

'只读':

  • 可以是实例级也可以是静态的.
  • 运行时评估值.
  • 可以在声明中或在构造函数中的代码中初始化.

更正:以上状态const不能是静态的.这是用词不当.他们不能应用静态关键字,因为它们已经是静态的.

因此,对于要在编译时评估的静态项,请使用const.

  • 不能静止?不是因为它是_always_ static吗? (4认同)
  • consts只是静态的,它们不能使用static关键字,因为它会是多余的 (2认同)

Chr*_*isW 5

您可以在 switch 语句 fwiw 中使用 const 值作为案例。