C#多重比较可能吗?

时间:2010-05-11 02:29:35

标签: c#

是否有可能以某种方式将多个变量与if语句中的一个常量进行比较?如果不是

,那将非常有帮助
if ( col.Name != "Organization" && col.Name != "Contacts" && col.Name != "Orders" ) { }

我可以说

if ( col.Name != "Organization" || "Contacts" || "Orders" ) { }

我知道我可以使用列表但在某些情况下我不想...谢谢!

4 个答案:

答案 0 :(得分:5)

switch语句与你会得到的一样好。

switch (col.Name)
{
    case "Organization":
    case "Contacts":
    case "Orders":
        break;
    default:
        break;
}

答案 1 :(得分:5)

如果您只是在寻找捷径,那么您可能不会得到太多。 ChaosPandion提到了switch语句,这里有一些使用数组的东西。

if (new string[] { "Bar", "Baz", "Blah" }.Contains(foo))
{
    // do something
}

答案 2 :(得分:1)

您还可以向字符串类添加扩展方法,以使您的比较更简洁。我会选择安东尼提供的解决方案并将其粘贴在一个名为EqualsAny的扩展方法中。或者其他一些方法。

答案 3 :(得分:1)

我第二次约翰对扩展方法的评论。我会做这样的事情:

public static class StringExtensions
{
    public static bool In(this string input, params string[] test)
    {
        foreach (var item in test)
            if (item.CompareTo(input) == 0)
                return true;
        return false;
    }
}

然后你可以这样称呼它:

        string hi = "foo";
        if (hi.In("foo", "bar")) {
            // Do stuff
        }