2016-04-20 10 views
1

このif文を書くには、より良い(良い方法)がありますか?if文でnullのいくつかの配列を調べる

Array a =null, b= null, c= null, d= null; 
if(a!=null && b!=null && c!=null && d!=null) 
{ //// TODO } 
+0

私はあなたがそれを書くことができる最も単純な方法であると確信しています。あなたはおそらく、すべてのパラメータがnullであるかどうかをチェックする関数を作成できますが、これは完全に実行されているように見えるからです。 –

+0

いくつかの場所では、nullをチェックするために9-10の配列を持っていますが、if条件は非常に不器用です。だからこれを行うためのより良い方法があるかどうかをチェックしたいと思った。 – Yogesh

答えて

5

あなたはアドホックコレクションを作ることができますし、それにLINQの[すべてのクエリを実行します。

if(!(new [] {a, b, c, d}).Any(_ => _ == null)) { 
    Console.WriteLine("None of the arrays are null"); 
} 

hereそれを試してみてください。

編集:私はあなたのコメントを見ました。あなたはこのシナリオのための配列のリストを使用することができます

static bool areNoneNull(params object[] things) { 
    return !things.Any(_ => _ == null); 
} 

public static void Main(String[] args) { 
    if(areNoneNull(a, b, c, d)) { 
     /* Do stuff */ 
    } 

    if(areNoneNull(x, y)) { 
     /* Do different stuff */ 
    } 
} 
+2

解決策はいいですね、この場合 'things.Any(_ => _ == null)'の場合は 'Any'を使うことを検討するかもしれませんが、_null _ではない場合はすべての項目を検証する必要はありません。 –

+0

ありがとう、これは私が探していたものです。 1つの方がパフォーマンスが良いという質問がもう1つありました(条件またはlinqの場合)。フィドルで変更しようとしましたが、両方のケースでほぼ同じように表示されています – Yogesh

+0

あなたは正しいです。私は解決策を書いたときにロジックを誤読していたので、関数ではなく等価チェックを切り替えました。私はそれを修正します。 – mirichan

0

:あなたはこのような何かを行うことができますので、様々なサイズと多くの場所でこれを使用するように見え、それは次のとおりです。

Array a =null, b= null, c= null, d= null; 
List<Array> listArray = new List<Array>() { a, b, c, d}; 
if (listArray.Any(x => x == null)) 
{ 
    // array contains null value 
} 
else { 
// do something 
} 
+0

それは動作しますが、変数を作成せずに不要なメモリを使用するようにチェックします。 – Yogesh

+0

ああさっぱり –

関連する問題