C#使用String.IsNullOrEmpty进行切换
-
08-07-2019 - |
题
是否可以在C#中进行切换,检查该值是空还是空而不是“”。但 String.Empty
?我知道我可以这样做:
switch (text)
{
case null:
case "":
break;
}
有没有更好的东西,因为我不想拥有大量的IF语句?
我试图替换:
if (String.IsNullOrEmpty(text))
blah;
else if (text = "hi")
blah
解决方案
我建议如下:
switch(text ?? String.Empty)
{
case "":
break;
case "hi":
break;
}
这就是你要找的东西吗?
其他提示
您的示例 switch
语句出了什么问题?
switch (text)
{
case null:
case "":
foo();
break;
case "hi":
bar();
break;
}
它有效(并且由于某些原因让我感到惊讶 - 我认为它会在 null
情况下抱怨或崩溃)而且很明显。
就此而言,你为什么担心 String.Empty
?我在这里错过了一些东西。
怎么样
if (string.isNullOrEmpty(text))
{
//blah
}
else
{
switch (text)
{
case "hi":
}
}
空字符串是“"”,它等于String.Empty。你可以放“&”的原因在case语句中但不是“String.Empty”就是那个“空”的是“String”类的字段。和“”实际上是一个有价值的东西。
在案例中允许使用常量值,String.Empty是一个字段,可以在运行时更改。 (在这种情况下,它将保持不变,但并非每个类的所有静态字段都是常量值。)
在'if'的情况下,在运行时评估该条件,并且不是否需要常量值。
我希望这能解释原因。
我刚注意到的一点是你可以结合if / else和switch语句!在需要检查前置条件时非常有用。
if (string.IsNullOrEmpty(text))
{
//blah
}
else switch (text)
{
case "hi":
Console.WriteLine("How about a nice game of chess?");
break;
default:
break;
}
string StrMode;
if (!string.IsNullOrEmpty(StrMode))
{
switch (StrMode.Trim())
{
case "Souse":
{
//Statement Eg:
MesssageBox.Show("Souse");
break;
}
case "Company Agent":
{
//Statement Eg:
MesssageBox.Show("Souse");
break;
}
default:
return;
}
}
不隶属于 StackOverflow