2014-03-05 56 views
-4

請放棄。這沒有得到正確的研究。我的歉意'&&'和'||'帶字符串的運營商

我遇到過這個問題一點點,我不確定這是爲什麼發生。

要比較兩個整數是好的使用&&||運營商,因爲這樣的:

int a = ...; 
    int b = ...; 
    if (a && b == 1) { do something } 

然而,這並不能處理字符串。相反,你必須這樣擺脫它:

string a = ...; 
    string b = ...; 
    if (a == "Hello" && b == "Hello") { do something } 

有誰能告訴我爲什麼這是什麼?

+5

我不認爲這個編譯。你確定? –

+0

我不能得到這個編譯 – BradleyDotNET

+0

是的,對此抱歉。沒有想到通過。我確信之前有過這種情況。 – Ben

回答

4

你的第一個樣品不符合你的想法。您需要定義它像這樣還有:

if (a == 1 && b == 1) { do something } 

的片段似乎作品的原因是a表達是一個整數,這可以隱式轉換爲布爾。您正在檢查a在較大的表達式中是否減少爲true或false,而不是它是否等於1.字符串另一方面不會隱式轉換爲布爾值,因此它在編譯時失敗,而不是給出錯誤的結果在運行時。

+1

+1用於解釋隱式轉換 – BradleyDotNET

+1

如果語句不編譯。 –

+3

對不起,可能會丟失一些東西,但這不是有效的C#代碼。而C#也沒有隱式轉換爲布爾值。 – Andrei