在if语句中检查多个字符串为null

Duš*_*šan 19 c# string null

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

if(string1 == null && string2 == null && string3 == null && string4 == null && string5 == null && string6 == null){...}
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 42

也许使用null-coalescing operator(??):

if((string1 ?? string2 ?? string3 ?? string4 ?? string5 ?? string6) == null){ ;}
Run Code Online (Sandbox Code Playgroud)

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

bool allNull = strings.All(s => s == null);
Run Code Online (Sandbox Code Playgroud)


juh*_*arr 15

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

if(listOfStrings.All(s=>s==null))
Run Code Online (Sandbox Code Playgroud)

至少你可以把它放在多行上

if(string1 == null 
   && string2 == null 
   && string3 == null 
   && string4 == null 
   && string5 == null 
   && string6 == null)
{...}
Run Code Online (Sandbox Code Playgroud)


Mat*_*son 11

如果你做了这样的功能:

public static bool AllNull(params string[] strings)
{
    return strings.All(s => s == null);
}
Run Code Online (Sandbox Code Playgroud)

然后你可以这样称呼它:

if (AllNull(string1, string2, string3, string4, string5, string6))
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

实际上,您可以更改AllNull()以使用任何引用类型,如下所示:

public static bool AllNull(params object[] objects)
{
    return objects.All(s => s == null);
}
Run Code Online (Sandbox Code Playgroud)


Luk*_*ley 5

string[] strs = new string[] { string1, string2, string3 };
if(strs.All(str => string.IsNullOrEmpty(str))
{
  //Do Stuff
}
Run Code Online (Sandbox Code Playgroud)

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