我只想创建像这样的操作符枚举,但这会产生错误。
Public enum MyOperators {"<", "<=", ">", ">="}
从SO上的建议,我尝试了这样的东西。
Public enum MyOperators {
Less ='<',
LessOrEqual = '<=',
Greater = '>',
GreaterOrEqual = '>='
}
现在它不喜欢LessorEqual和GreaterOrEqual中的“=”符号。
你可以在这里的C#操作符的MS参考中看到MS是如何处理它的。我也可以这样做,但我只是想看看是否有更好的建议。
编辑
如果您可以在不使用列表和switch语句的情况下执行此操作,那么您就可以回答我的问题
enum MyOperators {"<", "<=", ">", ">="}
string s = Console.ReadLine();
MyOperators op;
if (Enum.TryParse(s, true, out op)) {
//user entered operator
}
else {
//not operator
}
3条答案
按热度按时间n3h0vuf21#
枚举值的类型通常为
int
。因此,您不能分配string
或char
类型的对象。您可能会误解枚举的概念以及何时使用它。正如Abion47所说:...枚举类型可以声明为从
byte
到ulong
的任何本机整型以及介于两者之间的任何类型。[...]这不包括char
。[...]char
可隐式转换为int
,因此您可以将整数枚举赋给字符文本。你似乎在寻找一个常量列表。由于我不知道你想用你的“enum”做什么,试试这个,它可能会有帮助:
ffdz8vbo2#
根据你的编辑,你可以很容易地提供一个列表的功能,所以我不知道为什么你不想要一个。
如果愿意,您甚至可以用列表替换数组。
bjp0bcyl3#
刚刚在this answer中看到了如何使用EnumMember属性实现这一点,如果您主要关心的是反序列化JSON之类的内容: