2017-08-12 44 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属性作为布尔值来访问它。