【问题标题】:variable must be equal to a numerical value C# [closed]变量必须等于一个数值C# [关闭]
【发布时间】:2018-10-04 20:12:47
【问题描述】:

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

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
}

【问题讨论】:

  • 你的意思是这两个变量是否在一个范围内?两个变量不能相等,除非它们彼此相等。
  • 当你说“数值”时,你的意思是它会是一个整数吗?还是您选择“十进制”是因为它可能有十进制值?
  • 你应该检查这个变量是否在这个给定的范围内。正如@Crowcoder 所说,除非它们相等,否则您无法检查。
  • 欢迎康拉德。您的目标是确定两个文本表达式是否都遵循十进制浮点数的语法?
  • 没有人明白你在做什么。请添加几个例子,告诉我们它们是真是假。

标签: c# .net


【解决方案1】:

我只需要检查两个变量是否等于一个数值,

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

这是正确的方法吗?

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

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

在设计方法时,请考虑:输入什么,输出什么。我们想要做出决定,所以会出现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的含义就清楚了。

【讨论】:

    【解决方案2】:

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

    检查operand1是否在1到99999之间:

    • operand1 大于等于 1:if(operand1 &gt;= 1)
    • operand1 小于等于 99999:if(operand1 &lt;= 99999)

    组合它们:if(operand1 &gt;= 1 &amp;&amp; operand1 &lt;= 99999))

    检查operand2是否在1到99999之间:

    • 操作数2大于等于1:if(operand2 &gt;= 1)
    • 操作数2小于等于99999:if(operand2 &lt;= 99999)

    组合它们:if(operand2 &gt;= 1 &amp;&amp; operand2 &lt;= 99999)

    结合整体条件

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

    【讨论】:

    • 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation would greatly improve its long-term value 通过展示为什么这是一个很好的解决问题的方法,并将使其对未来有其他类似问题的读者更有用。请edit您的回答添加一些解释,包括您所做的假设。
    【解决方案3】:

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

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

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

    【讨论】:

    • 为什么投反对票? OP 在尝试比较值时显然犯了一个错误。
    • 是的,OP 有点含糊,但我的阅读方式与您相同。按位或将不正确,因为如果 numerical112 的输入将错误地返回 true。除非 OP 做出任何澄清,否则您的回答对我来说似乎是最正确的。
    • plus OP想检查值是否为1-9999
    • 我将问题解读为:将这两个值与他选择的第三个值进行比较。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多