一次又一次地使用单个变量的if语句的简写

时间:2013-08-30 18:53:09

标签: c# if-statement

我的问题非常简单。

是否有一个简短的手

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

是否有替代品。意思是,我可以做一些像

这样的事情

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

5 个答案:

答案 0 :(得分:5)

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

如果性能可能是一个问题,例如如果要检查或检查频繁的字符串列表,则应考虑将它们存储在HashSet<string>中,例如

var mySet = new HashSet<string> { "p", "l", "g", "z" };
// later...
if (mySet.Contains(a))

答案 1 :(得分:1)

Arrays.asList(new String[]{"a","b","c"}).contains("b");

答案 2 :(得分:1)

C#代码

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

if(myList.Contains(a))
{
 //victory :)
}

答案 3 :(得分:1)

您可以使用带有fall thru的开关语句:

switch (a) {

  case "p":
  case "l":
  case "g":
  case "z":
    // do something
}

答案 4 :(得分: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");
}