请考虑以下代码段:
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();
}
}
为什么不评估第二个条件(小于条件)?这也是事实,不是吗?
如果我必须使第二个工作在相同的条件下,必须做出哪些微小的改变?
答案 0 :(得分:8)
未检查第二个条件,因为仅在前面的条件被评估为else
时才会评估false
语句。有几种方法可以解决这个问题,其中一些方法可以在其他答案中找到。一种方法是使用单个if
语句,它结合了两个条件:
if (textBox1.MaxLength > 0 && textBox1.MaxLength < 32768)
{
textBox2.Text = Convert.ToBoolean(Math.Sqrt(textBox1.MaxLength)).ToString();
}
答案 1 :(得分:6)
else if
。
如果你想让它们都成立,你应该做
if(textBox1.MaxLength > 0 && textBox1.MaxLength < 32768)
{
// do stuff here
}
答案 2 :(得分:2)
你想要第二个if语句运行,即使第一个是真的吗? 摆脱其他
答案 3 :(得分:1)
因为你正在使用else而不是另一个if。
答案 4 :(得分:1)
如果第一部分为假,它只会到达第二部分。如果你想检查两者,你应该这样做:
if (textBox1.MaxLength > 0 && textBox1.MaxLength < 32768)
你可以看看&amp;&amp;像这样:
if (A && B) {
//do something
}
与
相同if (A) {
if (B) {
//do something
}
}
答案 5 :(得分:1)
我不太确定我是否理解你的问题,但是如果你想要同时执行if-then语句,你必须删除“else”。否则它只会执行firt if(如果是的话)。
答案 6 :(得分:1)
您永远不会达到第二个if
,因为大于0的任何数字将满足第二个更严格条件之前的第一个if
。换句话说,第一个if
将匹配n > 0
中的所有数字n,而第二个if
匹配数字32768 > n > 0
。
答案 7 :(得分:1)
你的“else if”陈述没有发生的原因是因为
if (textBox1.MaxLength > 0)
总是如此,因为MaxLength显然总是大于0,除非它被改为0。
我想补充说明
textBox1.MaxLength < 32768
可能也永远都是真的。
此外
当此属性设置为0时, 可以的文本的最大长度 输入控件仅限于 可用的记忆。
答案 8 :(得分:1)
认为else if
实际上是以这种方式写的:
private void button1_Click(object sender, EventArgs e)
{
//textBox2.Text += Convert.ToString (textBox1.Text + "garment");
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();
}
}
}
这是一回事。请注意,第二个if
sstatement仅在第一个为false时执行。
答案 9 :(得分:1)
我会这样做,如果我想说“如果MaxLength在0到32768之间”:
if (0 < textBox1.MaxLength && textBox1.MaxLength < 32768)
textBox2.Text = Convert.ToBoolean(Math.Sqrt(textBox1.MaxLength)).ToString();
由于您在此时间间隔内执行相同操作,因此更适合在相同的条件语句中生成两者。