32

有没有更好(更好)的方式来编写这个 if 语句?

if(string1 == null && string2 == null && string3 == null && string4 == null && string5 == null && string6 == null){...}
4

8 回答 8

52

也许使用空合并运算符(??

if((string1 ?? string2 ?? string3 ?? string4 ?? string5 ?? string6) == null){ ;}

如果所有字符串都在一个集合中,您可以使用 Linq:

bool allNull = strings.All(s => s == null);
于 2013-02-20T14:46:28.300 回答
15

您可以将所有字符串放在一个列表中并使用

if(listOfStrings.All(s=>s==null))

至少你可以把它放在多行

if(string1 == null 
   && string2 == null 
   && string3 == null 
   && string4 == null 
   && string5 == null 
   && string6 == null)
{...}
于 2013-02-20T14:43:47.300 回答
12

如果你做了这样的功能:

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);
}
于 2013-02-20T14:50:16.513 回答
5
string[] strs = new string[] { string1, string2, string3 };
if(strs.All(str => string.IsNullOrEmpty(str))
{
  //Do Stuff
}

或者strs.All(str => str == null),如果您不想检查空字符串,请使用。

于 2013-02-20T14:43:46.790 回答
3

制作一个 IEnumerable 字符串(列表或数组......),然后你可以使用.All()

var myStrings = new List<string>{string1,string2,string3....};
if(myStrings.All(s => s == null))
{
   //Do something
}
于 2013-02-20T14:43:54.230 回答
3

如果您想检查 null或 empty,这是另一种没有数组的方法:

if (string.Concat(string1, string2, string3, string4, string5).Length == 0)
{
    //all null or empty!
}
于 2013-02-20T14:46:59.713 回答
2

嗯,不知道不好,可以用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");
}
于 2013-02-20T14:46:50.827 回答
1

这应该做同样的事情:

if (string.IsNullOrEmpty(string1 + string2 + string3 + string4 + string5 + string6)){...}
于 2013-02-20T14:46:43.463 回答