转到错误。(C#)
我正在制作一个假的shell程序,我想通过输入一行代码来触发一个错误屏幕 以下是我的代码中受影响的部分:转到错误。(C#),c#,C#,我正在制作一个假的shell程序,我想通过输入一行代码来触发一个错误屏幕 以下是我的代码中受影响的部分: Console.Title = "Command Prompt"; OperatingSystem os = Environment.OSVersion; Version ver = os.Version; ver.ToString();
Console.Title = "Command Prompt";
OperatingSystem os = Environment.OSVersion;
Version ver = os.Version;
ver.ToString();
if (os.VersionString.Equals("Microsoft Windows NT 6.2.9200.0"))
{
Console.WriteLine("Microsoft Windows [Version 6.3.9600]");
Console.WriteLine("(c) 2013 Microsoft Corporation. All rights reserved. \n");
goto a;
}
else
ver_error:
{
Console.WriteLine("Error: OS '" + os.VersionString + "' Missing from libraries, \nnot yet implemented?\n");
Console.WriteLine("Available Operating Systems:\nWndows 8.1, Microsoft Windows NT 6.2.9200.0 ");
Thread.Sleep(3000);
Console.WriteLine("\n\nPress enter to boot Error Protocol, type exit to exit.\n");
error_test:
string errorProtocol;
errorProtocol = Console.ReadLine();
if (errorProtocol.Equals(""))
{
Console.WriteLine("Booting Error Protocol...");
Thread.Sleep(2000);
goto error_report;
}
else if (errorProtocol.Equals("exit"))
{
goto end;
}
else
{
Console.WriteLine("Not a valid response.");
goto error_test;
}
}
/* C:\Users\18LeunJA dir */
a:
Console.Write("C:\\Users\\18LeunJA>");
string userValueFromStart;
userValueFromStart = Console.ReadLine();
if (userValueFromStart.Equals("exit"))
{
goto end;
}
else if (userValueFromStart.Equals("triggerOSError"))
{
goto ver_error;
}
受影响的代码是“veru error:”行。有人能告诉我为什么这不起作用吗
编辑:我尝试将ver_错误移动到else主体中,但相反,它表示该标签未被引用,并且在goto语句的范围内“没有此类标签”“ver_错误”
在外部时,会出现错误“嵌入式语句不能是声明或带标签的语句”。我认为您的代码应该是代码: 尝试将
else
的括号放在else
Console.Title = "Command Prompt";
OperatingSystem os = Environment.OSVersion;
Version ver = os.Version;
ver.ToString();
if (os.VersionString.Equals("Microsoft Windows NT 6.2.9200.0"))
{
Console.WriteLine("Microsoft Windows [Version 6.3.9600]");
Console.WriteLine("(c) 2013 Microsoft Corporation. All rights reserved. \n");
goto a;
}
else
{
ver_error:
Console.WriteLine("Error: OS '" + os.VersionString + "' Missing from libraries, \nnot yet implemented?\n");
Console.WriteLine("Available Operating Systems:\nWndows 8.1, Microsoft Windows NT 6.2.9200.0 ");
Thread.Sleep(3000);
Console.WriteLine("\n\nPress enter to boot Error Protocol, type exit to exit.\n");
error_test:
string errorProtocol;
errorProtocol = Console.ReadLine();
if (errorProtocol.Equals(""))
{
Console.WriteLine("Booting Error Protocol...");
Thread.Sleep(2000);
goto error_report;
}
else if (errorProtocol.Equals("exit"))
{
goto end;
}
else
{
Console.WriteLine("Not a valid response.");
goto error_test;
}
}
/* C:\Users\18LeunJA dir */
a:
Console.Write("C:\\Users\\18LeunJA>");
string userValueFromStart;
userValueFromStart = Console.ReadLine();
if (userValueFromStart.Equals("exit"))
{
goto end;
}
else if (userValueFromStart.Equals("triggerOSError"))
{
goto ver_error;
}
顺便说一下,
goto
将仅在同一范围内工作。您正在从if
part调用goto
到else
part-这是错误的。将标签移动到else
正文的第一行。但是你根本不应该使用goto
通常强烈建议不要在C#中使用goto…除了其他任何东西,这是一种很难理解的编码风格。您是否考虑过尝试避免goto而不是仅仅更改代码以使其正常工作?当然C#编译器被大括号缩进样式搞糊涂了。我知道我是。方法对你做过什么?!:)它需要一些解释才能对OP有所帮助