2012-10-26 25 views
1

C#中是否沒有OR操作數用於字符串?或用於字符串的C#中的操作數

我正在看微軟的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#語法?

+0

也許http://stackoverflow.com/questions/4987873/how-to-find-if-a-string-contains-any-items-of-an-list-of-strings將幫助 – quip

+3

@AndrewAlexander運算符aren不是爲類型而是爲布爾表達式設計的。 –

+0

@MatíasFidemraizer嗯,無論如何,布爾運算符都是如此。 – Servy

回答

7

你不能那樣做。

相反,你可以寫

if (someString != "a" && someString != "b" && ...) 
+2

'你不能那樣做.' - 壓制者! –

3
if ((r["first_name"]) != "Antoine" || (r["first_name"]) != "Brad" || (r["first_name"]) !="Programming" || (r["first_name"]) != "Admin" ||r(["first_name"]) != "Patricia") 
+0

這將給出編譯器警告。 – SLaks

+0

@SLaks:爲什麼先生 –

+0

你正在比較'object'與'string';那將不會調用超載的'=='。 – SLaks

12

你可以把一個集合,然後使用含有

if (!(new []{"Antoine", "Brad", "Programming", "Admin", "Patricia"}.Contains(Convert.ToString(r["first_name"]))) 
0

在C#中,你可以把那些字符串數組,以確認是否含有r [「first_name」]:

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

     if (names.Contains(Convert.ToString(r["first_name"]))) 
     { 
      //doSomething 
     } 
0

我會建議把你想要的字符串或者放到一個數組中,然後檢查數組是否包含名字。

所以:

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

然後:

var match = names.Contains(r["first_name"]); 
1

某處在代碼中,聲明要覈對值。

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

然後當您需要查看該字符串是否在集合中時。

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

作爲一個額外的獎金HashSet構造可以採取比較器,可以讓你做不區分大小寫比較。