簡體   English   中英

為什么我的字符串比較返回意外結果?

[英]Why my string comparison returns an unexpected result?

我正在嘗試創建一個帶有添加按鈕和一些信息文本框的表單。 當我單擊添加按鈕時,應閱讀文本框中給出的所有信息,並在列表視圖和樹視圖中顯示。 這是我的添加按鈕單擊事件代碼。

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文本框中鍵入“ Female”並執行按鈕單擊,但是我的比較返回true ,這使Messagebox彈出。

為什么我的檢查textGender.Text != "Female" ||txtGender.Text != "Male"返回該意外值?

該代碼執行了您要求的操作。 您的條件textGender.Text != "Female" ||txtGender.Text != "Male"表示“如果該文本不是'Female'或該文本不是'Male'。

由於它不是“男性”,因此進入if塊。 您需要的是&&運算符

請嘗試使用以下條件

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

|| 運算符的意思是“或”,如果其中任何一條為真,則返回真。

textGender.Text != "Female"返回false

txtGender.Text != "Male"返回true

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

它應該是

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

因為,當文本不是女性而不是男性時,您會拋出一個錯誤,如果是其中之一,則讓它通過

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

如果txtGender.Text"Female"txtGender.Text != "Male" true,因為txtGender.Text != "Male" true

你想要的是

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

要么

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM