Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
转到错误。(C#)_C# - Fatal编程技术网

转到错误。(C#)

转到错误。(C#),c#,C#,我正在制作一个假的shell程序,我想通过输入一行代码来触发一个错误屏幕 以下是我的代码中受影响的部分: Console.Title = "Command Prompt"; OperatingSystem os = Environment.OSVersion; Version ver = os.Version; ver.ToString();

我正在制作一个假的shell程序,我想通过输入一行代码来触发一个错误屏幕

以下是我的代码中受影响的部分:

                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有所帮助