If条件只验证第一个语句

本文关键字:第一个 语句 验证 条件 If | 更新日期: 2023-09-27 18:02:24

我正在尝试添加用户到我的数据库表。下面是add按钮的方法:

if (userDG.CurrentRow.Cells[4].Value.Equals(null) && 
    userDG.CurrentRow.Cells[3].Value.Equals(null))
    MessageBox.Show("Please select a function for the user");
if (userDG.CurrentRow.Cells[3].Value.Equals(true) && 
    userDG.CurrentRow.Cells[4].Value.Equals(true))
    MessageBox.Show("Choose either programmer or tester for a user");
else
    userTableAdapter1.Update(database1DataSet1.User);

第二个ifelse工作良好。第一个if只验证第一个语句。对于上面的代码,它将添加用户而不显示消息。我也试过:

if (!(userDG.CurrentRow.Cells[3].Value.Equals(true)) && 
    !(userDG.CurrentRow.Cells[4].Value.Equals(true)))

例如:

  • 第一列:isprogrammer (boolean)
  • second: istester (boolean)

如果isprogrammer未选中,istester未选中,则显示错误的消息,因为不是两个都未选中。

如果我选中isprogrammer而不选中istester,它将添加用户,这是好的

附加信息:这两列的类型是Boolean。第一个if应该验证两者是否未被选中,如果它们是,则应该出现相应的消息。

在我的例子中:它添加用户,即使两者都未选中

If条件只验证第一个语句

你可能想做:

if (userDG.CurrentRow.Cells[4].Value.Equals(false) && userDG.CurrentRow.Cells[3].Value.Equals(false))
  MessageBox.Show("Please select a function for the user");
else if (userDG.CurrentRow.Cells[3].Value.Equals(true) && userDG.CurrentRow.Cells[4].Value.Equals(true))
  MessageBox.Show("Choose either programmer or tester for a user");
else
  userTableAdapter1.Update(database1DataSet1.User);

如果Cells[3].ValueCells[4].Value都等于false,你的代码仍然会进入else的情况并更新用户。这可能不是您想要的。

if&&表达式的第一部分为假时,程序已经知道&&表达式也将为假,因此不需要检查第二部分。这叫做"短路"

尝试使用单个&而不是两个,然后表达式的两边总是求值。