繁体   English   中英

如何将数学运算(加法、乘法等)分配给 c# 中的变量?

[英]how can I assign a mathematical operation (addition, multiplication, etc.) to a variable in c#?

虽然这似乎是一个非常常见的问题,但我还没有看到 C# 的答案。 Most answers I have seen recommend using the eval() function but from what I understand, that function is exclusive to JavaScript with no visible equivalent to C#.

在我的代码中,我认为我可以使用这样的 switch 语句:

void Update()
{

        int1 = 1;
        int2 = 2;
        op = "+";

        switch(op)
        {
            case "+":
                return output = int1 + int2;
            case "-":
                return output = int1 - int2;
            case "/":
                return output = int1 / int2;
            case "*":
                return output = int1 * int2;
        }
}

但这只是导致了一个错误:

 error CS0127: Since 'EquateNumb.Update()' returns void, a return keyword must not be followed by an object expression

关心您的声明,类型名称,我不确定,但您不能将变量名称分配为数字!

你应该关心你的函数的返回,void返回什么都没有,就像void,检查教程你会明白

int Update()
{

    int a = 1;
    int b = 2;
    op = "+";

    switch(op)
    {
        case "+":
            return (a + b);
        case "-":
            return (a - b);
        case "/":
            return (a / b);
        case "*":
            return (a * b);
    }
}

将我的评论移至此处,因为这有两个部分。

  1. 您的方法的返回类型为void ,这意味着该方法不会返回任何内容。 这显然不是你想要做的。 因此,您需要将void Update()更改为int Update()

  2. 您正在尝试为未声明的变量分配一个值并同时返回它。 这是不可能的。 如果您应该以以下 2 种方式之一进行重构。

重构 1:完全移除output

int Update()
{
        int1 = 1;
        int2 = 2;
        op = "+";

        switch(op)
        {
            case "+":
                return int1 + int2;
            case "-":
                return int1 - int2;
            case "/":
                return int1 / int2;
            case "*":
                return int1 * int2;
        }
}

重构2:使用output

int Update()
{
        int1 = 1;
        int2 = 2;
        op = "+";
       //this line can be removed if output is declared else where
        int output = 0;

        switch(op)
        {
            case "+":
                output = int1 + int2;
                break;
            case "-":
                output = int1 - int2;
                break;
            case "/":
                output = int1 / int2;
                break;
            case "*":
                output = int1 * int2;
                break;
        }
        return output;
}

边注:

  • 假设int1int2在此方法之外声明,通过在此方法中为它们分配值,每当调用此方法时它们将始终为 1 和 2。 这与op的情况相同。 调用此方法时,它将始终为+

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM