Проверка нескольких строк для null в выражении if
Есть ли лучший (более хороший) способ написать этот оператор if?
if(string1 == null && string2 == null && string3 == null && string4 == null && string5 == null && string6 == null){...}
Ответы
Ответ 1
Возможно, используя оператор null-coalescing (??
):
if((string1 ?? string2 ?? string3 ?? string4 ?? string5 ?? string6) == null){ ;}
Если все строки находятся в коллекции, вы можете использовать Linq:
bool allNull = strings.All(s => s == null);
Ответ 2
Вы можете поместить все строки в список и использовать
if(listOfStrings.All(s=>s==null))
По крайней мере, вы можете поместить его на несколько строк
if(string1 == null
&& string2 == null
&& string3 == null
&& string4 == null
&& string5 == null
&& string6 == null)
{...}
Ответ 3
Если вы сделали такую функцию:
public static bool AllNull(params string[] strings)
{
return strings.All(s => s == null);
}
Тогда вы можете называть его следующим образом:
if (AllNull(string1, string2, string3, string4, string5, string6))
{
// ...
}
Собственно, вы можете изменить AllNull() для работы с любым ссылочным типом, например:
public static bool AllNull(params object[] objects)
{
return objects.All(s => s == null);
}
Ответ 4
string[] strs = new string[] { string1, string2, string3 };
if(strs.All(str => string.IsNullOrEmpty(str))
{
//Do Stuff
}
Или используйте strs.All(str => str == null)
, если вы не хотите проверять пустые строки.
Ответ 5
Создайте IEnumerable из строк (список или массив....), затем вы можете использовать . Все()
var myStrings = new List<string>{string1,string2,string3....};
if(myStrings.All(s => s == null))
{
//Do something
}
Ответ 6
Если вы хотите проверить null или empty, вот еще один способ без массивов:
if (string.Concat(string1, string2, string3, string4, string5).Length == 0)
{
//all null or empty!
}
Ответ 7
Это должно сделать то же самое:
if (string.IsNullOrEmpty(string1 + string2 + string3 + string4 + string5 + string6)){...}
Ответ 8
Ну, я не знаю, лучше ли это или лучше, или нет, вы можете использовать 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");
}