在例程中预期
本文关键字:例程 | 更新日期: 2023-09-27 18:07:07
我是一名正在学习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;
}
}
学习如何格式化代码是编写正确工作的代码的关键技能。
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#开发人员坚持认为所有代码都应该用大括号包装,以避免混淆,这是一种良好的实践。
你想干什么?是否希望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
块之间放置旨在始终执行的其他代码。这就是产生错误的原因。
如果在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;
}
}
Else块无效。这可以按如下方法解决。
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;
}
}