我有一个称为“ 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/