1

C# 中没有用于字符串的 OR 操作数吗?

我正在查看 Microsoft C# 操作数页面 - 没有任何类型的 OR 字符串。

我有一个我正在尝试编写的 if 语句:

if (Convert.ToString(r["first_name"]) != "Antoine" || "Brad" || "Programming" || "Admin" || "Patricia")
                                   {

哪个 C# 因此错误而窒息:

CS0019: Operator '||' cannot be applied to operands of type 'bool' and 'string'

我习惯了 Python 和 PHP,在这些地方可以做类似的事情。

C# 的正确语法是什么?

4

6 回答 6

12

您可以将其设为集合,然后使用 contains

if (!(new []{"Antoine", "Brad", "Programming", "Admin", "Patricia"}.Contains(Convert.ToString(r["first_name"])))
于 2012-10-26T18:27:21.427 回答
7

你不能那样做。

相反,你可以写

if (someString != "a" && someString != "b" && ...)
于 2012-10-26T18:25:20.607 回答
3
if ((r["first_name"]) != "Antoine" || (r["first_name"]) != "Brad" || (r["first_name"]) !="Programming" || (r["first_name"]) != "Admin" ||r(["first_name"]) != "Patricia")
于 2012-10-26T18:27:05.583 回答
1

在代码的某处,声明要检查的值。

var badNames = new HashSet<string> {"Antoine", "Brad", "Programming", "Admin", "Patricia"};

然后稍后当您需要查看该字符串是否在集合中时。

if(!badNames.Contains(Convert.ToString(r["first_name"]))){
    return "Its all good.";
}

作为一个额外的好处,HashSet构造函数可以使用一个比较器,它可以让你进行不区分大小写的比较。

于 2012-10-26T18:30:37.873 回答
0

在 C# 中,您可以将这些字符串放在一个数组中并验证是否包含 r["first_name"]:

        var names = new[]{ "Antoine", "Brad", "Programming", "Admin", "Patricia" };

        if (names.Contains(Convert.ToString(r["first_name"])))
        {
            //doSomething
        }
于 2012-10-26T18:29:39.730 回答
0

我建议将您想要 OR 的字符串放入一个数组中,然后检查该数组是否包含名字。

所以:

var names = new [] {"Antoine", "Brad", "Programming", "Admin", "Patricia"};

然后:

var match = names.Contains(r["first_name"]);
于 2012-10-26T18:30:13.350 回答