是THRE没有办法有一个连字符枚举项,“ - ”,在名称,例如:一个C#枚举项可以在名称的连字符
enum myEnum
{
ok,
not-ok,
}
我见过的关于enums having friendly names的问题然而,如果我可以直接使用连字符,它会为我节省一些工作。
更新:我想用连字符的原因是它使得如它易于使用的枚举的,我有无法控制的设定值的列表:
rejected
replaced
local-bye
remote-bye
是THRE没有办法有一个连字符枚举项,“ - ”,在名称,例如:一个C#枚举项可以在名称的连字符
enum myEnum
{
ok,
not-ok,
}
我见过的关于enums having friendly names的问题然而,如果我可以直接使用连字符,它会为我节省一些工作。
更新:我想用连字符的原因是它使得如它易于使用的枚举的,我有无法控制的设定值的列表:
rejected
replaced
local-bye
remote-bye
假设您有:
enum E { a = 100 , a-b = 200 };
...
E b = E.a;
int c = (int)(E.a-b);
是C设为200,或者0?
允许在标识符中使用连字符将使语言几乎不可能在词法上分析。这种语言已经够难来分析一下与<<
和>>
各自具有两个完全不同的含义;我们不想让自己变得更难。
的命名指南说,使用驼峰规则,枚举值;遵循指导原则。
我很乐意遵守指导原则,但需要表示的字符串列表超出了我的控制范围。词法分析可能很难得到6个RFC来去除带连字符的单词也不容易。 – sipwiz 2010-02-24 19:53:23
你说“我会高兴地遵循的准则,但需要枚举表示字符串列表是在我的掌握”。由于这就是为什么你需要连字符的原因,所以我建议你重写你需要的枚举的toString()方法,并且在需要表示名字的代码中调用toString()方法。
可能,但属性更有意义(请参阅问题中的链接)。重写ToString()只是为了获得友好的名字是不合理的。 – 2012-10-19 22:24:20
如果有人需要使用连字符。我觉得这个方法可以帮助:使用下划线在枚举声明,然后替换用连字符下划线。
enum myEnum { ok, not_ok, }
var test = myEnum.not_ok;
// let's say this value is coming from database or somewhere else
var someValue = "not-ok";
if(test.ToString().Replace("_","-").equals(someValue)) { /* some stuff */ }
不是最好的做法,但可以帮助,如果你没有在“someValue中”控制和需要使用枚举。
如果你试图分裂话说出来枚举值,请尝试使用驼峰 – benPearce 2010-02-24 04:21:29
-1编程语言不是指一个人的语言,因此可能无法了解每一个变化,我们有能力。在我使用过的任何编程语言中,除了TSQL或PLSQL中带引号的标识符外,我从未见过连字符,它们主要用于根据结果集进行方便的列命名约定。 CamelCase是非常平静的方法。 – 2010-02-25 14:23:22
@ Marilliller:Thx对于这样一个惊人的见解!的 – sipwiz 2010-02-25 20:41:09