一尘不染

静态只读与常量

c#

我已经读过关于conststatic readonly领域。我们有一些仅包含常量值的类。用于我们系统中的各种事物。所以我想知道我的观察是否正确:

这些常量值是否应该始终static readonly适用于所有公开的东西?并且仅const用于内部/受保护/私有值吗?

您有什么推荐的吗?我是否应该甚至不使用static readonly字段,而应该使用属性?


阅读 269

收藏
2020-05-19

共1个答案

一尘不染

public static readonly领域有点不寻常;public static属性(只有get)会更常见(可能由private static readonly字段支持)。

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

  • 如果在运行时获取值(可能是从config中获取)是没有用的
  • 如果更改const的值,则需要重建所有客户端
  • 但它可以更快,因为它避免了方法调用…
  • … JIT有时可能内联了

如果该值 永远 不变,则const很好- Zero等使之成为合理的consts; p除此之外,static属性更常见。

2020-05-19