如何正确使用带有if语句的bool?

Jon*_*nas 2 .net c# if-statement boolean

我有这个名为"DoStuff()"的方法,它的作用是检查复选框是否被检查,然后它们是否做了什么.

private void DoStuff()
{
  if(Checkbox1.isChecked == true)
    {
      DoSomething();
    }

  if(Checkbox2.isChecked == true)
    {
      DoSomething();
    }

  if(Checkbox3.isChecked == true)
    {
      DoSomething();
    }

}
Run Code Online (Sandbox Code Playgroud)

我如何正确设置bool所以我不必为每个if语句执行"== true"?

Chr*_*isF 7

由于复选框可以是三态(已检查,未选中和未确定),因此您必须保留== true原位,因为它Checkbox.IsChecked是一个可以为空的布尔值,无法像标准布尔值那样进行测试.

即使复选框是双状态并且无法设置为它,用户的不确定状态IsChecked仍然是可以为空的布尔值,因为它可以通过null编程方式设置.

在这种情况下,离开代码绝对没有害处,就像你拥有它一样.您尝试删除== true遗嘱的任何操作都可能使代码的可读性降低,可维护性降低且可能不太稳定.例如,您可以这样做:

if ((bool)Checkbox1.IsChecked)
{
}
Run Code Online (Sandbox Code Playgroud)

但是如果复选框处于不确定状态,这将引发NullReferenceException,因此根本不是好习惯.

MSDN页面上的IsChecked属性