不知道如何建立方法,C#WFA

时间:2018-10-05 16:47:59

标签: c# .net

在为学校项目工作时,我遇到了使我的方法起作用的问题。

下面是我需要创建的:

if (operator1 == "+")
{
    //run method "calculate"
}

else if (operator1 == "-")
{
    //run method "calculate"
}

代替此:

if (operator1 == "+")
{
    decimal result = operand1 + operand2;
    txtResult.Text = result.ToString();
}

else if (operator1 == "-")
{
    decimal result = operand1 - operand2;
    txtResult.Text = result.ToString();
}

我应该具备以下条件:

private static Boolean Calculate(this string logic, int operand1, int operand2)
{
    switch (logic)
    {
        case "-": return operand1 - operand2;
        case "+": return operand1 + operand2;
        case "/": return operand1 / operand2;
        case "*": return operand1 * operand2;
        default: throw new Exception("invalid logic");
    }
}

这是我尝试过的概念,但是没有成功,有什么建议吗?

作为参考,这些是我的项目的要求:

  

编写一个名为Calculate的私有方法,该方法执行所请求的操作并返回一个十进制值。对于每个操作数,您将需要两个十进制变量,对于运算符,您将需要一个字符串变量(将对两个值执行)。

4 个答案:

答案 0 :(得分:2)

您的输入和返回类型错误,请尝试以下操作:

private static decimal Calculate(this string logic, decimal operand1, decimal operand2)
{
    switch (logic)
    {
        case "-": return operand1 - operand2;
        case "+": return operand1 + operand2;
        case "/": return operand1 / operand2;
        case "*": return operand1 * operand2;
        default: throw new Exception("invalid logic");
    }
}

还请注意,您使用的extension method只能在静态类中使用。要将其更改为常规方法,请从方法签名中删除this

答案 1 :(得分:1)

不返回Boolean返回类型。而是返回decimal

private static decimal Calculate(string logic, decimal operand1, decimal operand2)
    {
        switch (logic)
        {
             case "-": 
                return operand1 - operand2;
            case "+": 
                return operand1 + operand2;
            case "/": 
                return operand1 / operand2;
            case "*": 
                return operand1 * operand2;
            default: 
                throw new Exception("invalid logic");
        }
    }

这应该返回所需的输出,因为其return typedecimal

答案 2 :(得分:0)

您已定义Calculate返回Boolean,并且正在返回类型int的结果。您需要将返回类型更改为int。但是,如果假设您要使用两个decimal并返回一个decimal,则应将返回类型和操作数类型更改为decimal

答案 3 :(得分:-2)

您已经得到了一些很好的答案,在这里我将通过一些错误处理来合并它们,这些错误处理也应包括在内。

    private static decimal Calculate(string logic, decimal operand1, int operand2)
    {
        if (null == logic)
            throw new ArgumentException("logic cannot be null");

        switch (logic)
        {
            case "-":
                return operand1 - operand2;
            case "+":
                return operand1 + operand2;
            case "/":
                return operand1 / operand2;
            case "*":
                return operand1 * operand2;
            default:
                throw new ArgumentException("logic contains an unknown operator");
        }
    }