为什么else语句要运行呢?
本文关键字:运行 else 语句 为什么 | 更新日期: 2023-09-27 18:09:54
所以基本上,我遇到了一个问题,我不知道。我有这样的代码:
if ((v - e.Delta) <= 0) vScrollBar1.Value = vScrollBar1.Minimum;
if ((v - e.Delta) >= vScrollBar1.Maximum) vScrollBar1.Value = vScrollBar1.Maximum;
else vScrollBar1.Value -= e.Delta;
尽管第一个if语句为真并运行其代码,但它仍然运行"else"代码。例如:v = 0, e.d = 120所以第一个if语句为真并且有效,但我不知道为什么它运行else语句,当第二个if语句为真时它不运行。谢谢你的回答/建议!
这两个if
是独立的
if ((v - e.Delta) <= 0) vScrollBar1.Value = vScrollBar1.Minimum;
if ((v - e.Delta) >= vScrollBar1.Maximum) vScrollBar1.Value = vScrollBar1.Maximum;
else vScrollBar1.Value -= e.Delta;
您应该在第二个if
之前添加一个else
。这样的:
if ((v - e.Delta) <= 0) vScrollBar1.Value = vScrollBar1.Minimum;
else if ((v - e.Delta) >= vScrollBar1.Maximum) vScrollBar1.Value = vScrollBar1.Maximum;
else vScrollBar1.Value -= e.Delta;
第二行缺少初始else
,
但是更好的方法是使用三元运算符:
vScrollBar1.Value =
v - e.Delta <= 0? vScrollBar1.Minimum:
v - e.Delta >= vScrollBar1.Maximum? vScrollBar1.Maximum:
vScrollBar1.Value - e.Delta;
两个if
是不同的。你看,c#中条件的顺序是if-else if-else
。因此,使第二个if
成为else if
,您的逻辑应该按预期运行。
if ((v - e.Delta) <= 0) vScrollBar1.Value = vScrollBar1.Minimum;
else if ((v - e.Delta) >= vScrollBar1.Maximum) vScrollBar1.Value = vScrollBar1.Maximum;
else vScrollBar1.Value -= e.Delta;
德不懂!