如果条件仅验证第一个语句

时间:2014-05-07 15:31:33

标签: c# sql

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

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(布尔)
  • 第二名:istester(布尔)

如果取消选中isprogrammer并且选中了istester,则会显示该消息,这是错误的,因为不会取消选中这两个消息。

如果我选中isprogrammer并取消选中istester,则会添加好用户。

额外信息:2列的类型为Boolean。第一个if应该验证两者是否都未被检查,如果它们是相应的消息应该出现。

在我的情况下:即使两者都未选中,它也会添加用户。

2 个答案:

答案 0 :(得分:1)

你可能打算这样做:

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个案并更新用户。这可能不是你想要做的。

答案 1 :(得分:0)

&&if表达式的第一部分结果为假时,程序已经知道&&表达式也将是假的,所以没有需要检查第二部分。这称为“短路”

尝试使用单个&而不是两个,然后始终对表达式的两边进行评估。