否则,如果错误地评估bool

时间:2013-04-10 12:24:42

标签: c# boolean if-statement

这是我的代码:

if (addNewRecord == false)
        { MessageBox.Show("No action selected. \nSave cancelled."); }
else if (editCurrentRecord == false)
        { MessageBox.Show("No action selected. \nSave cancelled."); }
else{.....}

addNewRecordeditCurrentRecord都是我检查过的具有true值的bool。当我按上述方式执行操作时,消息框仍将显示为bool为false。但是,如果我仅对ELSE IF发表评论,则会按预期继续使用ELSE。我错过了一些基本的东西吗?感谢您的任何意见。

编辑:两个消息框都不显示一个。我正在使用MessageBox.Show(addNewRecord.ToString())检查IF语句之前的两个bool的值;并且对于另一个bool检查相同的值。他们按计划工作。只有在我尝试使用else if或OR语句来评估两个bool时才会出现问题。

以下是所有相关代码:

namespace E_Z_Rent
{
public partial class Bookings : Form
{
    bool addNewRecord = false;
    bool editCurrentRecord = false;

    public Bookings()
    {
        InitializeComponent();
    }

    private void bookingsBindingNavigatorSaveItem_Click(object sender, EventArgs e)
    {
        MessageBox.Show(addNewRecord.ToString());
        MessageBox.Show(editCurrentRecord.ToString());
        if (addNewRecord == false)
        { MessageBox.Show("No action selected. \nSave cancelled."); }
        else if (editCurrentRecord == false)
        { MessageBox.Show("No action selected. \nSave cancelled."); }
        else
        {
            MessageBox.Show("OK");
        }
    }

    private void EditFieldsCheckBox_CheckedChanged(object sender, EventArgs e)
    {
        if (EditFieldsCheckBox.Checked == true)
        {
            editCurrentRecord = true;
        }
        else 
        {
            editCurrentRecord = false;
        }
    }

    private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e)
    {
        addNewRecord = true;
    }
}
}

我按照预期的方式工作:

   if (addNewRecord == true || editCurrentRecord == true){
          MessageBox.Show("OK");
      }
      else
      {
          MessageBox.Show("No action selected. \nSave cancelled.");
      }

我仍然对此感到困惑,所以如果有人能说出为什么会这样,我会回来看看。感谢所有人的建议。

2 个答案:

答案 0 :(得分:1)

似乎你想这样做;

if (addNewRecord == false || editCurrentRecord == false)
        { MessageBox.Show("No action selected. \nSave cancelled."); }
else{.....}

答案 1 :(得分:0)

你的算法错了。 只有当addNewRecord和editCurrentRecord都为真时,才会进入最后的情况。 如果有任何错误,您将弹出“未选择操作”消息。