このifステートメントを書くためのより良い(より良い)方法はありますか?
if(string1 == null && string2 == null && string3 == null && string4 == null && string5 == null && string6 == null){...}
おそらく null-coalescing operator(??
) :
if((string1 ?? string2 ?? string3 ?? string4 ?? string5 ?? string6) == null){ ;}
すべての文字列がコレクションに含まれている場合は、Linqを使用できます。
bool allNull = strings.All(s => s == null);
すべての文字列をリストに入れて使用することができます
if(listOfStrings.All(s=>s==null))
少なくとも、複数の行に配置できます
if(string1 == null
&& string2 == null
&& string3 == null
&& string4 == null
&& string5 == null
&& string6 == null)
{...}
次のような関数を作成した場合:
public static bool AllNull(params string[] strings)
{
return strings.All(s => s == null);
}
次に、次のように呼び出すことができます。
if (AllNull(string1, string2, string3, string4, string5, string6))
{
// ...
}
実際、AllNull()を次のようにany参照型で動作するように変更できます。
public static bool AllNull(params object[] objects)
{
return objects.All(s => s == null);
}
_string[] strs = new string[] { string1, string2, string3 };
if(strs.All(str => string.IsNullOrEmpty(str))
{
//Do Stuff
}
_
または、空の文字列をチェックしたくない場合は、strs.All(str => str == null)
を使用します。
Null または空をチェックする場合は、配列を使用しない別の方法を次に示します。
if (string.Concat(string1, string2, string3, string4, string5).Length == 0)
{
//all null or empty!
}
文字列(リストまたは配列....)のIEnumerableを作成すると、 。All() を使用できます。
var myStrings = new List<string>{string1,string2,string3....};
if(myStrings.All(s => s == null))
{
//Do something
}
まあ、それがより良いなのかより良いなのかはわかりませんが、- IEnumerable.Anyこのようなメソッド;
シーケンスに要素が含まれているかどうかを判断します。
List<string> list = new List<string>{"string1","string2","string3", "string4", "string5"};
if(list.Any(n => n == null))
{
}
そして、Enumerable.All()メソッドのように使用できます。
シーケンスのすべての要素が条件を満たすかどうかを決定します。
if (Enumerable.All(new string[] { string1, string2, string3, string4, string5 }, s => s == null) )
{
Console.WriteLine("Null");
}
これは同じことをするはずです:
if (string.IsNullOrEmpty(string1 + string2 + string3 + string4 + string5 + string6)){...}