c# - 如何在 if 语句中正确使用 bool?

标签 c# .net if-statement boolean

我有一个名为“DoStuff()”的方法,它的作用是检查复选框是否已选中,如果选中则执行某些操作。

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

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

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

}

如何正确设置 boolean 值,这样我就不必为每个 if 语句执行“== true”?

最佳答案

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

即使复选框是双态的并且不能被用户设置为不确定状态 IsChecked 仍然是一个可为空的 boolean 值,因为它可以设置为 null以编程方式。

在这种情况下,保留现有代码绝对没有坏处。您尝试删除 == true 所做的任何操作都很可能会降低代码的可读性、可维护性并可能降低稳定性。例如,您可以这样做:

if ((bool)Checkbox1.IsChecked)
{
}

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

MSDN page on the IsChecked property

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

相关文章:

javascript - 二月份的表单验证

Perl - 多个条件if语句而不重复代码?

java - 从Java中传递的字符串中获取最长的子字符串

linux - linux shell 脚本中的一行 if/else 条件

c# - 从另一个应用程序域返回的对象可以在调用域中序列化吗?

c# - 如何在U-SQL查询中获取文件的完整路径

.net - 用于极低带宽通信的最佳 .NET 通信组件或协议(protocol)?

c# - ExecuteSqlCommand 与 SqlQuery 有什么区别?什么时候做数据库访问?

c# - 在azure函数V2中将TraceWriter替换为ILogger

c# - 更好的 DateTime.Parse 在那里?