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 に答える