这个If语句嵌套有什么问题

时间:2013-07-22 15:36:38

标签: c# if-statement

我有这个IF声明

else if (dtpFechaResol.Value.ToShortDateString().Equals(DateTime.Now.ToShortDateString()))
{
    DialogResult dialogResult = MessageBox.Show("Are you sure", "Error!", MessageBoxButtons.YesNo, MessageBoxIcon.Information);

    if (dialogResult == DialogResult.No) dtpFechaResol.Focus();
}
// This Statement is Jumping  
else if (blNuevo && cbCaja.SelectedIndex >= 0 && txtResolucion.Text.Trim().Length > 0)
{
    ........
}

第二个else if验证第一个else if是否不满足条件,但如果第一个else if满足条件则第二个dialogResult

我的理解是,在验证else if时的第一个语句中答案是肯定的,下一个语句必须验证,但不是

这些{{1}}是5,但这2让我成为问题

有人可以说我的问题是什么

2 个答案:

答案 0 :(得分:3)

这就是else if构造的工作原理。执行评估为true的第一个else if,同时忽略整个else if块中的后续if...else if个部分。

如果您希望保证评估多个条件,请将它们分解为单独的if块。

答案 1 :(得分:2)

@Karls的回答是正确的。要想象如何执行 if-else-if 块,你只需要添加一些缩进:

if (conditionA)
{
    statementA
}
else if (conditionB)
     {
        statementB
     }
     else if (conditionC)
          {
              statementC
          }

我不喜欢这种条件块排列。因为实际上你在方法中有很深的嵌套条件,这些条件被不良的缩进隐藏。