Проверка нескольких строк для 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");
}