2017-07-09 3 views
0

私は2つの条件が試している||を持っています。最初の条件は捕まえようとしません。しかし、第二のものです。キャッチしようとしませんでした第2の条件を試してください

fbd [0] .SelectedPathがnullでない場合にのみtryメソッドが実行されます。

ケース1:if(fbd[0].SelectedPath != null || fbd[1].SelectedPath != null) OK

ケース2:if(fbd[0].SelectedPath == null || fbd[1].SelectedPath != null)ないOK

ケース3:if(fbd[0].SelectedPath != null || fbd[1].SelectedPath == null) OK

ケース4:if(fbd[0].SelectedPath == null || fbd[1].SelectedPath == null)ないOK

//私はこの方法を実行したいです内部ケース2:

+1

のですか?私はそれらの1つが賭けているとメソッドは 'キャッチ'ブロックに行く。 – Guy

+0

それらのうちの1つがnullでない場合、メソッドを実行する必要があります – Vincent

+0

'fbd [1] .SelectedPath'が' null'ではないと思うのはなぜですか?あなたはそれをデバッグしましたか?それは例外をスローしますか?それはちょうど 'if'ブロックの中に入っていませんか? –

答えて

6

NullReferenceExce ptionこれは、キャッチが「キャッチ」しない理由です。

あなたは、そのインスタンスのプロパティを使用していて、それは例えばnullの場合はnull参照の例外を受け取ります:

fbd[0].SelectedPath.SomeProp //Will cause exception if fbd[0].SelectedPath is null 

あなたがそれらのいずれかが理由ではない、単にnullであるかどうかを確認したい場合は、次の

fbd[0].SelectedPath == null || fbd[1].SelectedPath == null 

もちろん、fbd [i]はnullでもかまいません。そのプロパティからSelectedPathプロパティを読み取ろうとすると例外が発生します。

を追加しました:

常に良い習慣は、それがされる可能性がある場合は、使用しているインスタンスがnullでないかどうかを確認することです。ここ

if (fbd[0]!=null && fbd[0].SelectedPath != null || 
    fbd[1]!=null && fbd[1].SelectedPath != null) 
    { 
     //Safe to use 
    } 
+0

これらのうちの1つがnullでない場合、例外を受け取りたくありません。 – Vincent

+1

常に適切な方法は、使用されているインスタンスが可能性がある場合はnullでないかどうかをチェックすることです。 @ヴィンセント –

1

は `FBD場合` FBD [0] .SelectedPath == null`なのであなたは[0]をチェックでした `と` fbd`は `null`なのである私の最後の方法

private void ButtonExecute_Click(object sender, EventArgs e) 
    { 
     if (fbd[0]?.SelectedPath != null || fbd[1]?.SelectedPath != null) 
     { 
      SearchingPhoto(); 
     }  
    } 
関連する問題