【发布时间】:2013-03-25 04:20:22
【问题描述】:
这有点像duplicate question,但没有真正的解决方案。
所以我们开始吧。假设我有:
public enum Color
{
Red,
Blue,
Green
}
public class BlueUnicorn
{
private const Color Color = Color.Blue;
}
“对大多数 Enum 类型使用单数名称,但对作为位字段的 Enum 类型使用复数名称。”取自Microsoft's Enumeration Type Naming Guidelines检查!
“考虑赋予属性与其类型相同的名称。”取自Microsoft's Names of Type Members 检查!
根据 Resharper Check!
的说法,我应该使用常量而不是只读的
但是我得到一个编译器错误。不过,这很奇怪,没有智能。 “BlueUnicorn.Color”常量值的评估涉及循环定义。
我觉得我在这里遇到了一个会议裂缝。根据最佳实践命名约定,该字段应命名为什么?
【问题讨论】:
-
我可以建议将枚举或 BlueUnicorn const 的
Color重命名为ColorChoice吗? -
@Kane:这样做的原因是什么?我觉得不合适。
-
这有点偏题了——尽管有 Resharper 的建议,但对于任何非自然常量的 public,我会使用 readonly 而不是 const。 (例如一天或从不改变的某事)。原因: const 被复制而不被引用。因此,如果您上面的代码在 ClassLibrary A 中,并且 exe B 引用 A,并且您构建,Color.Blue 值将被复制到 exe B。这意味着如果您发布更改 const 值的类库的新版本为绿色,您的 exe 将继续使用蓝色,直到您重新编译它为止。
-
(虽然我想你可能会争辩说 BlueUnicorn 的 Color.Blue 是一个自然常数:P
-
@JMarsch:他的常量是私有的。
标签: c# enums naming-conventions