是否有更短的写入方式x == y OR x == z?

时间:2016-03-23 05:35:35

标签: c#

C#中是否有任何方法可以缩短此内容?

例如,您如何缩短这一点:

bool a = x == "YES" || x == "NO"

代码I'写作:

public static bool isYESNO(string x)
{
        return x == "YES" || x == "NO";
}

3 个答案:

答案 0 :(得分:7)

您可以编写扩展方法:

public static class Extensions
{
    public static bool In<T>(this T item, params T[] items)
    {
         return items.Contains(item);
    }
}

然后像这样使用它:

var x = "YES";
bool a = x.In("YES", "NO");
Console.WriteLine(a);

如果您只有几个项目可能没有太大帮助,但是它有很多项目会缩短语法:

bool a = x.In("YES", "NO", "TRUE", "FALSE", "SOME OTHER VALUE");

答案 1 :(得分:2)

您可以尝试

if (new[] {"YES", "NO"}.Contains(x))

当您有多个值来检查OR条件时,这可能很有用。像

这样的东西
if (new[] {"YES", "NO", "value1", "value2", "value3", "value4"}.Contains(x))

在您目前的情况下,您的行事方式非常易读且简短。

答案 2 :(得分:1)

假设您只想检查两个项目,例如示例中显示的内容,我认为您的方法已经很短了。但是,如果您有很多项目(如10项)进行检查,请考虑使用LINQ Contains进行比较:

string[] correctItems = new string[] { "YES", "NO", "bla1", "bla2", "bla3", "bla4", "bla5", "bla6", "bla7", "bla8" };
bool a = correctItems.Contains(x);