为什么我的字符串比较返回意外结果?

时间:2017-10-22 16:04:34

标签: c# string winforms

我尝试使用添加按钮和一些信息文本框创建表单。单击“添加”按钮时,应读取文本框中给出的所有信息,并在列表视图和树视图中显示。这是我的添加按钮点击事件代码。

private void btnAdd_Click(object sender, EventArgs e)
{
    if(txtBYear.Text == "" ||
       txtGender.Text == "" || txtMSSV.Text == "" ||
       txtName.Text=="" || cBoxClasses.Text == "")
    {
        MessageBox.Show("Missing information!", "Error");
        return;
    }

    if (txtGender.Text !="Female" || txtGender.Text!="Male")
    {
        MessageBox.Show("Male or Female only!", "Error");
        return;
    }

    var mssv = txtMSSV.Text;
    var name = txtName.Text;

    uint bYear;
    bool gender;

    var addr = txtAddress.Text;
    uint cl = (uint)cBoxClasses.SelectedValue;
    var clName = cBoxClasses.SelectedText;

    if (txtGender.Text == "Female")
        gender = true;
    else 
        gender = false;

    if (uint.TryParse(txtBYear.Text, out bYear))
    {
        MessageBox.Show("Incorrect Birth Year!", "Error");
        return;
    }

    var newStudent = new Student(cl, mssv, name, bYear, gender, addr);

    Classes x;

    if(classes.GetClassesById(cl, out x))
    {
        x.AttendingStudents.Add(newStudent);
    }
    else
    {
        var tmp = new Classes(cl, clName);
        classes.Add(tmp);
        tmp.AttendingStudents.Add(newStudent);
    }

    lViewMain.Update();
    tViewMain.Update();
}

我尝试输入"女性"在txtGender文本框中执行按钮单击,但我的比较返回true,这会弹出Messagebox

为什么我的支票textGender.Text != "Female" ||txtGender.Text != "Male"会返回该意外值?

4 个答案:

答案 0 :(得分:1)

代码执行您告诉它的操作。您的情况textGender.Text != "Female" ||txtGender.Text != "Male"表示"如果文字不是'女性'或者文字不是“男性”。

因为它不是“男性”,所以它会进入if块。您需要的是&&运算符

请尝试使用以下条件

textGender.Text != "Female" && txtGender.Text != "Male"

答案 1 :(得分:0)

||运算符表示'或',如果其中一个语句为真,则返回true。

textGender.Text != "Female"返回false

txtGender.Text != "Male"返回true

这意味着textGender.Text != "Female" || txtGender.Text!= "Male"会返回true

答案 2 :(得分:0)

应该是

if (txtGender.Text !="Female" && txtGender.Text!="Male")
{
   MessageBox.Show("Male or Female only!", "Error");
   return;
}

因为,当文字不是女性而不是男性时,你会抛出一个错误,如果它是其中任何一个,那么让它通过

答案 3 :(得分:0)

 textGender.Text != "Female" ||txtGender.Text != "Male" 

如果txtGender.Text"Female"txtGender.Text != "Male"成为真,则属实

你想要的是

 !(textGender.Text == "Female" ||txtGender.Text == "Male")

或者

 textGender.Text != "Female" && txtGender.Text != "Male"