【发布时间】:2018-06-10 11:34:14
【问题描述】:
我对代码很陌生。谁能以简单的方式解释为什么我不能像这样使用 goto 语句来使代码重新开始?或者,如何以正确的方式做到这一点?还有,为什么我会收到关于使用“静态”的错误消息。 ** “在 goto statmenet 范围内没有这样的标签“开始”” "修饰符 static 对此项无效"
using System;
namespace ConsoleApp3
{
class Program
{
static void Main(string[] args)
{
Start:
Random numberGenerator = new Random();
int num1 = numberGenerator.Next(1,11);
int num2 = numberGenerator.Next(1, 4);
Console.WriteLine("What is " + num1 + " times " + num2 + "?");
int svar = Convert.ToInt32(Console.ReadLine());
if (svar == num1 * num2)
{
Console.WriteLine("well done!");
}
else
{
int responseIndex = numberGenerator.Next(1, 4);
switch (responseIndex)
{
case 1:
Console.WriteLine("Wrong, try again? [Y or N]");
AskUser();
break;
case 2:
Console.WriteLine("The answer was incorrect");
AskUser();
break;
default:
Console.WriteLine("You can do better than that");
AskUser();
break;
}
static void AskUser() {
string jaellernei = Console.ReadLine().ToUpper();
if (jaellernei == "Y")
{
goto Start;
} else
{
return;
} }
}
}
}
}
【问题讨论】:
-
我对代码很陌生。那么不要学习使用
goto,你永远不需要在c#中使用它。 -
@Rotem 好吧,“从不”是强词......有些东西你不应该习惯性地使用,但确实有真正的用途当你确切地知道你为什么使用时它。它是我可能每年使用一次的东西......
-
@MarcGravell 在我看来,如果你足够了解使用
goto而不会弄得一团糟,那么你知道的足以忽略我的建议。