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);
第二个if
和else
工作良好。第一个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 (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].Value
和Cells[4].Value
都等于false
,你的代码仍然会进入else
的情况并更新用户。这可能不是您想要的。
当if
中&&
表达式的第一部分为假时,程序已经知道&&
表达式也将为假,因此不需要检查第二部分。这叫做"短路"
尝试使用单个&
而不是两个,然后表达式的两边总是求值。