【问题标题】:if statement logic with OR condition带有 OR 条件的 if 语句逻辑
【发布时间】:2019-08-15 12:56:56
【问题描述】:

我必须测试一个条件,当dr["QUALITY"].ToString() 的值不是“A”或dr["QUALITY"].ToString() 的值不是“D”时,则只执行 if 块。但是当值为“A”时,会执行if 块代码。

string test = dr["QUALITY"].ToString();
if ((!dr["QUALITY"].ToString().Equals("A")) || (!dr["QUALITY"].ToString().Equals("D")))
{
    dr["QUALITY_GRD"] = Calc_Rank(Convert.ToInt32(dr["QUALITY"].ToString()), 0);
    dr["QUALITY_PT"] = Calc_Grade(dr["QUALITY_GRD"].ToString(), 1);
}
else
{
    dr["QUALITY_GRD"] = "";
    dr["QUALITY_PT"] = "";
}

这里的if 块代码在值为“A”时执行。我不明白代码有什么问题。请建议。谢谢!!!

【问题讨论】:

    标签: c# if-statement operators


    【解决方案1】:

    如果QUALITY"A",那么你的第二部分if-statement

    (!dr["QUALITY"].ToString().Equals("D"))
    

    是真的

    所以你的代码应该是这样的

    string quality = dr["QUALITY"].ToString();
    if (quality != "A" && quality != "D")
    {
        dr["QUALITY_GRD"] = Calc_Rank(Convert.ToInt32(quality), 0);
        dr["QUALITY_PT"] = Calc_Grade(dr["QUALITY_GRD"].ToString(), 1);
    }
    else
    {
        dr["QUALITY_GRD"] = "";
        dr["QUALITY_PT"] = "";
    }
    

    【讨论】:

      【解决方案2】:

      您需要使用&& 而不是||

      当前读取的代码,如果不是A或者不是D

      因此,如果您将其传递给 A,它仍然是正确的,因为它不是 D

      【讨论】:

        【解决方案3】:

        代码中的错误是 OR (||) 比较和两个否定条件。检查以下伪代码:

        If ( character is not A OR character is not D )
         => Always true.
        

        所以把比较改成这个:

        if ((!dr["QUALITY"].ToString().Equals("A")) && (!dr["QUALITY"].ToString().Equals("D")))
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-01-30
          • 1970-01-01
          • 2019-11-10
          • 1970-01-01
          • 2016-10-08
          • 1970-01-01
          • 1970-01-01
          • 2021-10-24
          相关资源
          最近更新 更多