2016-10-01 15 views
0

なので、基本的に問題に遭遇しましたが、わかりません。 私はこのコードを持っている:最初の文が真であり、そのコードを実行する場合にもかかわらずなぜこのelseステートメントが実行されるのですか?

if ((v - e.Delta) <= 0) vScrollBar1.Value = vScrollBar1.Minimum; 
if ((v - e.Delta) >= vScrollBar1.Maximum) vScrollBar1.Value = vScrollBar1.Maximum; 
else vScrollBar1.Value -= e.Delta; 

を、それはとにかく「他」のコードを実行します。 例:v = 0、e.Delta = 120したがって、最初のif文がtrueで動作しますが、なぜelse文が実行されるのかわかりませんが、2番目のif文がtrueのときは実行されません。 回答ありがとうございました!

+6

2番目の前にelseを追加する場合 – Steve

+6

両方のif文は完全に独立しています。あなたのelseは後者にしか属しません。 – Marvin

+0

ありがとうございます!あなたは両方とも助けてくれました! *。* – Pett

答えて

1

これらの2つの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; 

あなたは二ifelseを追加する必要があります。このように:

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

私はこのような答えを追加しようとしています.pplは実際に答えを述べました。 :)しかし、お返事いただきありがとうございます! :) – Pett

0

あなたが
が、さらに良いが、このために三項演算子を使用することで、2行目の最初のelseを欠落していました。 C#の条件文の順序はif-else if-elseです。したがって、その2番目のifelse 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

ここで三項演算子を使うのは 'else else if else'を使うのと同じです。私は個人的に入れ子構造の三項演算子が' else else 'のように明瞭ではないと思っています。 –

+1

各ブロックのコードが異なる機能を実行しているときは 'else else if else'を使用します。すべてのオプションが等価である場合(ここではすべて同じ目標変数に値を代入します)、三項演算子はコードの機能的な目的をより明確に表現していると思います。 (1つのことしか起こっていないし、1つのステートメントとして表現することは、if else elseのブロックに隠された複数のステートメントとして表現するよりも機能的な意図に近いものです) –

+0

多くのことは、ここでのフォーマットは本当にはっきりしていますが、頻繁に使用されていることはありませんでしたが、振り返ってみると私はここで同意し、おそらくこのスタイルを自分で採用するでしょう。 –

0

どちらif sが異なります

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; 
関連する問題