我不确定我做错了什么! else
命令及其上方的括号似乎没有正确执行:
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (username_txtb.Text == username && password_txtb.Text == password);
{
MessageBox.Show("You are now logged in!");
}
else ;
{
MessageBox.Show("Sorry, you have used the wrong username and password. Please try again.");
}
}
答案 0 :(得分:2)
else ;
应该是
else
删除分号,会阻止身体执行。
private void button1_Click(object sender, EventArgs e)
{
if (username_txtb.Text == username && password_txtb.Text == password) //; - remove
{
MessageBox.Show("You are now logged in!");
}
else //; - remove
{
MessageBox.Show("Sorry, you have used the wrong username and password. Please try again.");
}
}
答案 1 :(得分:2)
请注意:
else ;
相当于:
else
{
}
所以:
else ;
{
//some code
}
相当于:
else
{
}
{
//some code
}
更明显的是,它相当于:
else
{
}
// the conditional clauses are over,
// nothing special here except for an extra scope
// which is a valid construct (even though being useless here)
{
//some code
}
第二个块与条件没有关系 - 它只是括号中的代码块创建无用的范围,并且将始终执行。
if
之后适用相同的规则。
答案 2 :(得分:2)
显示的代码会产生语法错误,应该是:
无效的表达式术语'else'
语法错误是由分号尾随if
(else
后面的分号在运行程序时会导致“意外行为”引起的,并且相同原则适用)。
if (..);
{
..
}
else ..
相当于
if (..)
/* empty statement - no code run when if is true! */ ;
/* arbitrary code in a block *not associated* with the `if` */
{
..
}
else ..
在这种情况下,“任意代码块”结束 if-statement
语法结构。
要修复语法错误(和语义问题),请在 if
和else
语句后删除分号:
if (..) /* no semicolon */
{
MessageBox.Show("..");
}
else /* no semicolon */
{
MessageBox.Show("..");
}