有没有更好(更好)的方法来编写这个if语句?在if语句中检查几个字符串为null
if(string1 == null && string2 == null && string3 == null && string4 == null && string5 == null && string6 == null){...}
有没有更好(更好)的方法来编写这个if语句?在if语句中检查几个字符串为null
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);
string[] strs = new string[] { string1, string2, string3 };
if(strs.All(str => string.IsNullOrEmpty(str))
{
//Do Stuff
}
或者使用strs.All(str => str == null)
如果你不想检查空字符串。
你可以把列表中的所有字符串,并使用
if(listOfStrings.All(s=>s==null))
至少,你可以把它放在多行
if(string1 == null
&& string2 == null
&& string3 == null
&& string4 == null
&& string5 == null
&& string6 == null)
{...}
制作的串(列表或数组中的IEnumerable。 ...),那么你可以使用.All()
var myStrings = new List<string>{string1,string2,string3....};
if(myStrings.All(s => s == null))
{
//Do something
}
或者在一行中...'if(Enumerable.All(new string [] {str1,str2,str3,str4},s => s == null))' – 2013-02-20 14:46:39
@JimMischel:这会创建一个额外的集合缩短评估。顺便说一句,它甚至不会真的缩短它。 – 2013-02-20 15:21:08
@TimSchmelter:是的,它确实创建了一个额外的集合,正如你提出的答案一样。 – 2013-02-20 15:53:07
好了,我不知道这是否是更好或更好,或没有,你可以使用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.Concat(string1, string2, string3, string4, string5).Length == 0)
{
//all null or empty!
}
不检查全部是否为空,与Dennisch的答案相同。 – 2013-02-20 15:17:10
@Tim确实如此,编辑过的文章反映了这一点。 – 2013-02-20 15:18:49
如果你犯了这样一个功能:
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);
}
如果(String.IsNullOrWhiteSpace(字符串1)&& ... - >所以你不仅要检查空字符串,而且要检查空字符串和一些只包含空格字符串 – Offler 2013-02-20 14:42:39
你真的需要这么多单独的字符串变量吗?你能不能创建一个数组或字符串列表并使用它?它很可能会简化很多其他操作。 – 2013-02-20 14:43:11
根据你提供的信息,不,不是真的(如果这对你有帮助,我想你可以分几行),但@JohnWillemse点的立场。如果你需要很多字符串变量,也许你需要考虑使用一些可以封装这个逻辑的不同数据结构。 – 2013-02-20 14:44:53