变量必须等于数字C#

时间:2018-10-04 20:12:47

标签: c# .net

我无法弄清楚如何使此条件起作用,我所需要做的就是检查两个变量是否等于一个数值,然后执行如下所示的代码。这是正确的方法吗?如果没有,有什么建议吗?

decimal operand1 = Convert.ToDecimal(txtOperand1.Text);
decimal operand2 = Convert.ToDecimal(txtOperand2.Text);

if (operand1 & operand2 == any numerical value between 1 and 99999)
{
    // if true execute this
}
else
{
    //if false execute this
}

3 个答案:

答案 0 :(得分:4)

  

我所需要做的就是检查两个变量是否等于数值,

您的问题的描述与代码中的描述不同。在代码中,您说您需要检查两个变量是否等于特定范围内的任何值,而不是等于特定值。假设您是说后者。

  

这是正确的方法吗?

不。 &应用于数字时有特殊含义,不适用于小数。

我对初学者的建议是:当您尝试代表一个新概念时,请制定一种代表该概念的方法。然后,随着技能的提高,您可以改进该方法。

在设计方法时,请考虑:有什么用,有什么用。我们希望做出决定,因此出现bool。里面有什么?我们希望测试的值以及范围:

static bool IsInRange(decimal value, decimal low, decimal high)
{

好的,在什么情况下该东西可能为假?如果该值小于low,则不在该范围内,因此请说:

  if (value < low)
    return false;

类似地:

  if (value > high)
    return false;

我们现在已经考虑了所有错误的案例,因此剩下的唯一案例始终都是真实的:

  return true;
}

现在我们有了可以使用的工具。

if (IsInRange(operand1, 1m, 99999m) && IsInRange(operand2, 1m, 99999m)) ...

我们完成了吗?否。总是问自己是否有办法使程序更清晰。有:

const decimal low = 1m;
const decimal high = 99999m;
if (IsInRange(operand1, low, high) && IsInRange(operand2, low, high)) ...

现在,如果您决定更改范围,则只需执行一次。现在,含义分别为1m和99999m。

答案 1 :(得分:1)

您可以单独检查条件,然后将它们组合:

检查操作数1是否在1到99999之间:

  • operand1大于或等于1:if(operand1 >= 1)
  • operand1小于或等于99999:if(operand1 <= 99999)

将它们组合:if(operand1 >= 1 && if(operand1 <= 99999))

检查操作数2是否在1到99999之间:

  • operand2大于或等于1:if(operand2 >= 1)
  • operand2小于或等于99999:if(operand2 <= 99999)

将它们组合:if(operand2 >= 1 && if(operand2 <= 99999))

结合整个条件

if ((operand1 >= 1 && operand1 <= 99999) && (operand2 >= 1 && operand2 <= 99999))
{
            //stuff
}

答案 2 :(得分:0)

您需要将测试分为两个条件。当前,您正在使用按位或(用于二进制算术)。 这就是代码的外观(假设您有一个变量'numerical',要测试:

if (operand1 == numerical && operand2 == numerical)
{
   // if true execute this
}

现在两个操作数必须等于数字。