如何创建运算符的枚举>,<,< =,> =

时间:2017-02-02 02:51:24

标签: c# .net parsing enums

我只想创建像这样的运算符,但这会产生错误。

Public enum MyOperators {"<", "<=", ">",  ">="}

关于SO的建议,我试过这样的事情。

Public enum MyOperators {
  Less ='<', 
  LessOrEqual = '<=',
  Greater = '>', 
  GreaterOrEqual = '>='
}

现在它不喜欢LessOrEqual和GreaterOrEqual中的'='符号。

对于c#运算符,您可以看到MS如何在MS引用here处对其进行处理。 我也可以这样做,但我只是想看看是否有更好的建议。

修改

如果你可以在没有list和switch语句的情况下完成这项工作,你会回答我的问题

        enum MyOperators {"<", "<=", ">",  ">="}

        string s  = Console.ReadLine();
        MyOperators op;

        if (Enum.TryParse(s, true, out op)) {
            //user entered operator 
        }
        else {
            //not operator
        }

2 个答案:

答案 0 :(得分:2)

枚举值通常为int类型。因此,您无法分配stringchar类型的对象。你可能会误解枚举的概念以及何时使用它。

正如Abion47所说:&#34; ...枚举类型可以声明为byteulong之间的任何本机整数类型以及介于两者之间的所有内容。 [...]这不包括char。 [...] char可隐式转换为int,因此您可以为字符文字分配整数枚举。&#34;

您似乎在寻找常量列表。因为我不知道你想要用你的&#34; enum&#34;试试这个,它可能有所帮助:

public static class MyOperators
{
    public const string Less = "<"; 
    public const string LessOrEqual = "<=";
    public const string Greater = ">";
    public const string GreaterOrEqual = ">=";
}

答案 1 :(得分:2)

根据您的编辑,您可以轻松地使用列表提供该功能,因此我不确定您为什么不想要它。例如,您可以这样做:

foreach ($data as $row)
{
    echo $string = $data['u_name'].' '.$data['u_surname'];
}

如果您愿意,甚至可以将列表替换为数组。