有没有办法在枚举条目名称中使用连字符“-”,例如:
enum myEnum
{
ok,
not-ok,
}
我看到了关于枚举有友好名称的问题,但如果我可以直接使用连字符,这将节省我一些工作。
更新:我想使用连字符的原因是它使得在我无法控制的设置值列表中使用枚举变得容易,例如:
rejected
replaced
local-bye
remote-bye
有没有办法在枚举条目名称中使用连字符“-”,例如:
enum myEnum
{
ok,
not-ok,
}
我看到了关于枚举有友好名称的问题,但如果我可以直接使用连字符,这将节省我一些工作。
更新:我想使用连字符的原因是它使得在我无法控制的设置值列表中使用枚举变得容易,例如:
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?
如果在标识符中允许使用连字符,则使该语言几乎无法进行词法分析。由于“<<”和“>>”具有完全不同的含义,这种语言已经很难分析了;我们不想让自己更加困难。
命名指南建议对枚举值使用驼峰式大小写,请遵循此指南。
如果有人需要使用连字符,我认为这种方法可以帮助:在枚举声明中使用下划线,然后将下划线替换为连字符。
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"并且需要使用枚举,这可以帮助你。
你说:“我很乐意遵循指南,但需要表示的字符串列表不在我的控制范围内。”既然这就是你想要连字符的原因,我建议你覆盖所需枚举的toString()方法,并在需要表示名称的代码中调用toString()。