为什么这个else语句仍在运行?

时间:2016-10-01 16:46:35

标签: c#

基本上,我遇到了一个问题,我无法弄明白。 我有这段代码:

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语句为true并运行其代码,它也会运行&#34; else&#34;代码无论如何。 示例:v = 0,e.Delta = 120,因此第一个if语句为true并且有效,但我不知道为什么它运行else语句,当第二个if语句为时它不会运行真正。 感谢您的回答/建议!

3 个答案:

答案 0 :(得分:1)

这两个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;

您应该在第二个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;

答案 1 :(得分:0)

您在第二行中缺少初始else
但更好的是使用三元运算符:

 vScrollBar1.Value = 
     v - e.Delta <= 0?                   vScrollBar1.Minimum:
     v - e.Delta >= vScrollBar1.Maximum? vScrollBar1.Maximum:
                                         vScrollBar1.Value - e.Delta;

答案 2 :(得分:0)

两个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;

De rien!