-3

好吧,我有一个这个 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是五个,但这两个让我成为问题

有人可以告诉我我的问题是什么

4

2 回答 2

3

这就是else if构造的工作原理。第一个else if计算结果为 true 的部分将被执行,而else if整个if...else if块中的后续部分将被忽略。

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

于 2013-07-22T15:40:37.880 回答
2

@Karls 的答案是正确的。要可视化if-else-if块的执行方式,您只需添加一些缩进:

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

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

于 2013-07-22T15:45:30.433 回答