我有这个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让我成为问题
有人可以说我的问题是什么
答案 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
}
我不喜欢这种条件块排列。因为实际上你在方法中有很深的嵌套条件,这些条件被不良的缩进隐藏。