我是一名正在学习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;
}
}
答案 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;
}
}