在常规中预期

时间:2016-09-15 21:53:31

标签: c#

我是一名正在学习C#的学生。我尝试编写这个例程,但是我收到一个错误,告诉我预期会出现“}”。但是,当我添加“}”时,我会收到很多其他错误。我认为这是因为你没有在“else”语句之前添加“}”。这是我的代码:

private void PathExist()
{
    if (Directory.Exists(folderBrowserDialog.SelectedPath + @"\"))
        lblExist.Visible = false;
        Properties.Settings.Default.FirstTime = false;
        // Create a new instance of the Form2 class
        MainFrm MainForm = new MainFrm();
        MainForm.Show();
        Hide();//This is where Visual Studio is telling me that a "}" is expected
    else
    {
        lblExist.Visible = true;
        lblExist.Text = "Folder doesn't exist";
        lblExist.ForeColor = Color.Red;
    }
}

3 个答案:

答案 0 :(得分:3)

学习如何格式化代码是编写能够正常工作的代码的关键技能。

private void PathExist()
{
    if (Directory.Exists(folderBrowserDialog.SelectedPath + @"\"))
    {
        lblExist.Visible = false;
        Properties.Settings.Default.FirstTime = false;
        // Create a new instance of the Form2 class
        MainFrm MainForm = new MainFrm();
        MainForm.Show();
        Hide(); //This is where Visual Studio is telling me that a "}" is expected
    }        
    else 
    {
        lblExist.Visible = true;
        lblExist.Text = "Folder doesn't exist";
        lblExist.ForeColor = Color.Red;

    }
}

请注意在if语句之后立即添加了一个开头{,并在else之前添加了相应的结束}

现在,您可能会声称"但我已经在C#中看到了大括号看似可选的代码!"这仅适用于以下单个逻辑行:

if (condition)
    ExecuteMethod();
else 
    ExecuteOtherMethod();

如果条件中的任何代码块超过一个"指令",则必须将该代码包装在括号中。此外,一些C#开发人员会坚持认为所有代码应始终用括号括起来以避免混淆,并且是一种良好的实践。

答案 1 :(得分:0)

你想做什么?您是否希望仅在目录存在时才执行if和else之间的所有语句?如果是这样,那么你需要将它们全部放在一个块中。并且由于块具有多个语句,因此必须使用开括号和右括号来指定它。否则,if将只包含下一个语句。

        private void PathExist()
    {
        if (Directory.Exists(folderBrowserDialog.SelectedPath + @"\"))
        {
            lblExist.Visible = false;
            Properties.Settings.Default.FirstTime = false;
            // Create a new instance of the Form2 class
            MainFrm MainForm = new MainFrm();
            MainForm.Show();
            Hide(); 
        }
        else 
        {
            lblExist.Visible = true;
            lblExist.Text = "Folder doesn't exist";
            lblExist.ForeColor = Color.Red;

        }
    }

如果您只希望在lblExist.Visible = false;时执行Directory.Exists语句,并且希望的下4个语句始终执行,那么您需要解释一下else是为了。因为它不是if子句的一部分。 if子句,就像你拥有它一样,以lblExist.Visible = false;之后的分号结尾你无法将其他代码放在if块和else之间。 if/else构造的块。这就是产生错误的原因。

答案 2 :(得分:0)

如果在IF语句后没有包含{},则IF条件下只有一个语句将被视为if块。而你的else块没有与之关联的If条件。

编译器认为它是

private void PathExist()
{
    if (Directory.Exists(folderBrowserDialog.SelectedPath + @"\"))
    {
        lblExist.Visible = false;
    }
        Properties.Settings.Default.FirstTime = false;
        // Create a new instance of the Form2 class
        MainFrm MainForm = new MainFrm();
        MainForm.Show();
        Hide();


    else
    {
        lblExist.Visible = true;
        lblExist.Text = "Folder doesn't exist";
        lblExist.ForeColor = Color.Red;
    }
}

其他块无效。 这可以解决如下。

private void PathExist()
{
    if (Directory.Exists(folderBrowserDialog.SelectedPath + @"\"))
    {//Answer
        lblExist.Visible = false;
        Properties.Settings.Default.FirstTime = false;
        // Create a new instance of the Form2 class
        MainFrm MainForm = new MainFrm();
        MainForm.Show();
        Hide();
    }//Answer
    else
    {
        lblExist.Visible = true;
        lblExist.Text = "Folder doesn't exist";
        lblExist.ForeColor = Color.Red;
    }
}