-1

我的问题很简单。

有短手吗

if (a == "p" || a == "l" || a == "g" || a == "z")
{
            //do something 
}

是否有替代方案。意思是,我可以做类似的事情吗

if (a == ("p" || "l" || "g" || "z"))//这不起作用

4

5 回答 5

5
if (new[] { "p", "l", "g", "z" }.Contains(a))

如果性能可能是一个问题,例如您有大量字符串要检查,或者经常检查,您应该考虑将它们存储在 a 中HashSet<string>,例如

var mySet = new HashSet<string> { "p", "l", "g", "z" };
// later...
if (mySet.Contains(a))
于 2013-08-30T18:58:25.150 回答
1
Arrays.asList(new String[]{"a","b","c"}).contains("b");
于 2013-08-30T18:55:37.337 回答
1

您可以将 switch 语句与fall thru 一起使用:

switch (a) {

  case "p":
  case "l":
  case "g":
  case "z":
    // do something
}
于 2013-08-30T19:02:46.573 回答
1

如果您编写一个扩展方法,例如:

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");
}
于 2013-08-30T19:03:33.597 回答
1

C# 代码

var myList = new[] { "p", "l", "g", "z" };

if(myList.Contains(a))
{
 //victory :)
}
于 2013-08-30T19:01:19.700 回答