【发布时间】:2009-01-30 10:24:28
【问题描述】:
我经常发现自己实现了一个类,它维护某种自己的状态属性作为枚举:我有一个 Status 枚举和一个 Status 类型的 Status 属性。我应该如何解决这个名称冲突?
public class Car
{
public enum Status
{
Off,
Starting,
Moving
};
Status status = Status.Off;
public Status Status // <===== Won't compile =====
{
get { return status; }
set { status = value; DoSomething(); }
}
}
如果 Status 枚举对不同类型是通用的,我会把它放在类之外,问题就会得到解决。但 Status 仅适用于 Car,因此在类之外声明枚举是没有意义的。
在这种情况下您使用什么命名约定?
注意:这个问题在this question 的答案中得到了部分讨论。由于它不是主要问题,因此没有引起太多关注。
编辑:Filip Ekberg 针对“状态”的特定情况提出了 IMO 极好的解决方法。然而,我会很高兴阅读有关枚举/属性名称不同的解决方案,如 Michael Prewecki 的答案。
EDIT2(2010 年 5 月):我最喜欢的解决方案是将枚举类型名称复数,正如 Chris S 所建议的那样。根据 MS 指南,这应该仅用于标志枚举。但我越来越喜欢它了。我现在也将它用于常规枚举。
【问题讨论】:
-
如果你想让枚举嵌套在你的类中,我认为没有很多好的解决方案。我实际上更喜欢将枚举分开然后它不会出现问题,但我可以从哲学上看到你想要嵌套它的观点。
标签: c# .net enums naming-conventions