C#如何使用开关的枚举

我无法弄清楚如何将开关与枚举结合使用。 你能告诉我我做错了什么,以及如何解决它? 我必须使用枚举来制作一个基本的计算器。

public enum Operator
{
    PLUS, MINUS, MULTIPLY, DIVIDE
}

public double Calculate(int left, int right, Operator op)
{

    int i = (int) op;

    switch(i)
    {
        case 0:
        {
            return left + right;
        }

        case 1:
        {
            return left - right;
        }

        case 2:
        { 
            return left * right;
        }

        case 3:
        {
            return left / right;
        }

        default:
        {
            return 0.0;
        }
    }
}

最终的结果应该是这样的:

Console.WriteLine("The sum of 5 and 5 is " + Calculate(5, 5, PLUS))
Output: The sum of 5 and 5 is 10

你能告诉我我是怎么搞的吗?


你不需要转换它

switch(op)
{
     case Operator.PLUS:
     {

     }
}

顺便说一下,使用括号


根本不要转换为int

 switch(operator)
    {
       case Operator.Plus:
       //todo

已经给出了正确的答案,但是这里是比开关更好的方法:

private Dictionary<Operator, Func<int, int, double>> operators =
    new Dictionary<Operator, Func<int, int, double>>
    {
        { Operator.PLUS, ( a, b ) => a + b },
        { Operator.MINUS, ( a, b ) => a - b },
        { Operator.MULTIPLY, ( a, b ) => a * b },
        { Operator.DIVIDE ( a, b ) => (double)a / b },
    };

public double Calculate( int left, int right, Operator op )
{
    return operators.ContainsKey( op ) ? operators[ op ]( left, right ) : 0.0;
}
链接地址: http://www.djcxy.com/p/84487.html

上一篇: C# how to use enum with switch

下一篇: Switch Statement Fallthrough...should it be allowed?