2017-08-12 47 views
-2

我想測試並看看是否有4個用戶輸入的答案是正確的(我已經測試過,沒有使用if語句和所有變量都是正確的),但是它似乎只檢查4個if語句中的條件。我試過使用單一的&和雙& &運營商,都沒有區別?如果沒有檢查多個值的語句

if(isOneCorrect.ToUpper() == checkBox1.Checked.ToString().ToUpper() && 
    isTwoCorrect.ToUpper() == checkBox2.Checked.ToString().ToUpper() && 
    isThreeCorrect.ToUpper() == checkBox3.Checked.ToString().ToUpper() && 
    isFourCorrect.ToUpper() == checkBox4.Checked.ToString().ToUpper()) 
    { 
     MessageBox.Show("you won!"); 
    } 

我能做些什麼使if語句確保4的每一個條件是正確的?

+0

'isOneCorrect'的類型是什麼? – ashin

+0

我會嘗試把他們自己的一套圓括號中的四個支票放在一起(),以 – Deolus

+0

開頭@ashin他們是布爾值 –

回答

0

C#快捷方式中的布爾運算符/表達式 - 這意味着如果您有多個順序布爾運算符(就像您擁有的那樣),那麼當整體結果不能再被更改時,表達式求值將停止。

所以,多解釋一下:你有四個&&的操作符。要將if聲明評估爲true這些ANDed表達式的所有都需要評估爲true。如果第一個失敗,其餘的評估都沒有意義,最終結果不會改變。

比較字符串時,應該使用string.Equals()擴展方法。
但是,您確實在isOneCorrect是boolean的註釋中聲明;如果checkBox1.Checked也是布爾值,那麼您不需要將任何內容轉換爲字符串,只需比較兩個布爾值即可。如果checkBox1.Checked是可空的布爾(bool?),那麼使用HasValueValue屬性作爲布爾值來訪問它。