一次又一次地将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语句用于单个变量的捷径

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");
}