否则不起作用

时间:2013-11-17 21:34:06

标签: c#

我不确定我做错了什么! 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.");
    }
}

3 个答案:

答案 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'

语法错误是由分号尾随ifelse后面的分号在运行程序时会导致“意外行为”引起的,并且相同原则适用)。

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语法结构。

要修复语法错误(和语义问题),请在 ifelse语句后删除分号:

if (..) /* no semicolon */
{
    MessageBox.Show("..");
}
else /* no semicolon */
{
    MessageBox.Show("..");
}