一次又一次地将if语句用于单个变量的捷径
本文关键字:单个 变量 捷径 用于 语句 if 一次又一次 | 更新日期: 2023-09-27 18:29:45
我的问题很简单。
有人手短缺吗
if (a == "p" || a == "l" || a == "g" || a == "z")
{
//do something
}
有替代品吗。意思是,我可以做一些类似的事情吗
if (a == ("p" || "l" || "g" || "z"))
//这不起作用
if (new[] { "p", "l", "g", "z" }.Contains(a))
如果性能可能是一个问题,例如您有一个很大的字符串列表要检查,或者经常检查,那么您应该考虑将它们存储在HashSet<string>
中,例如
var mySet = new HashSet<string> { "p", "l", "g", "z" };
// later...
if (mySet.Contains(a))
Arrays.asList(new String[]{"a","b","c"}).contains("b");
C#代码
var myList = new[] { "p", "l", "g", "z" };
if(myList.Contains(a))
{
//victory :)
}
您可以将switch语句与fall-through一起使用:
switch (a) {
case "p":
case "l":
case "g":
case "z":
// do something
}
如果您编写一个类似的扩展方法,效果会更好
public static class MyExtension
{
public static bool In(this string c, params string[] items)
{
return items.Contains(c);
//OR //return items.Any(r => r == c);
}
}
然后像一样使用
if ("a".In("p", "l", "a", "z"))
{
Console.WriteLine("Exists");
}
else
{
Console.WriteLine("Doesn't exist");
}