[英]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);
}
}
将我的评论移至此处,因为这有两个部分。
您的方法的返回类型为void
,这意味着该方法不会返回任何内容。 这显然不是你想要做的。 因此,您需要将void Update()
更改为int Update()
。
您正在尝试为未声明的变量分配一个值并同时返回它。 这是不可能的。 如果您应该以以下 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;
}
边注:
int1
和int2
在此方法之外声明,通过在此方法中为它们分配值,每当调用此方法时它们将始终为 1 和 2。 这与op
的情况相同。 调用此方法时,它将始终为+
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.