在if条件为真之后评估else

Mar*_*rie 3 c# if-statement

请考虑以下代码段:

private void button1_Click(object sender, EventArgs e)
{
    if (textBox1.MaxLength > 0)
    {
        textBox2.Text = Convert.ToBoolean(Math.Sqrt(textBox1.MaxLength)).ToString();
    }
    else if (textBox1.MaxLength < 32768)
    {
        textBox2.Text = Convert.ToBoolean(Math.Sqrt(textBox1.MaxLength)).ToString();
    }                
}
Run Code Online (Sandbox Code Playgroud)

为什么不评估第二个条件(小于条件)?这也是事实,不是吗?

如果我必须使第二个工作在相同的条件下,必须做出哪些微小的改变?

Don*_*nut 8

第二个条件未被检查,因为else只有在评估前面的条件时才会评估语句false.有几种方法可以解决这个问题,其中一些方法可以在其他答案中找到.一种方法是使用单个if语句,它结合了两个条件:

if (textBox1.MaxLength > 0 && textBox1.MaxLength < 32768)
{
    textBox2.Text = Convert.ToBoolean(Math.Sqrt(textBox1.MaxLength)).ToString();
}
Run Code Online (Sandbox Code Playgroud)


Ada*_*ear 6

else if 仅在第一个条件不满足时检查.

如果你想让它们都成真,你应该这样做

if(textBox1.MaxLength > 0 && textBox1.MaxLength < 32768)
{
   // do stuff here
}
Run Code Online (Sandbox Code Playgroud)