我有一个称为“ DoStuff()”的方法,它的作用是检查是否选中了复选框,然后检查了复选框是否起作用。

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

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

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

}


如何正确设置布尔值,而不必为每个if语句都执行“ == true”?

最佳答案

由于复选框可以是三态(选中,未选中和不确定),因此您必须将== true保留在原处,因为Checkbox.IsChecked是可为空的布尔值,不能像标准布尔值那样简单地进行测试。

即使该复选框是双向状态,并且用户IsChecked不能将其设置为不确定状态,它仍然是可为空的布尔值,因为可以通过编程将其设置为null

在这种情况下,将代码保留为绝对没有任何害处。您尝试删除== true所做的任何事情都更有可能使代码的可读性,可维护性和稳定性降低。例如,您可以执行以下操作:

if ((bool)Checkbox1.IsChecked)
{
}


但是,如果复选框处于不确定状态,这将引发NullReferenceException,因此根本不是一种好的做法。

MSDN page on the IsChecked property

关于c# - 如何正确地将bool与if语句一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41366373/

10-13 06:11