转到-不在范围内(C#)
我对代码非常陌生。有人能用一种简单的方式解释为什么我不能像这样使用goto语句,使代码重新开始吗?或者,这是如何以正确的方式实现的?还有,为什么我在使用“static”时会收到错误消息。 ** goto statmenet范围内没有此类标签“Start” “静态修饰符对此项无效”转到-不在范围内(C#),c#,goto,C#,Goto,我对代码非常陌生。有人能用一种简单的方式解释为什么我不能像这样使用goto语句,使代码重新开始吗?或者,这是如何以正确的方式实现的?还有,为什么我在使用“static”时会收到错误消息。 ** goto statmenet范围内没有此类标签“Start” “静态修饰符对此项无效” 首先,您的AskUser方法错误地嵌套在另一个方法中-将其移出 其次:goto仅在单个方法中有效;可以围绕单个堆栈帧跳转-不能在堆栈帧之间跳转 第三:你应该使用goto的次数。。。嗯,它不是很零,但它逐渐接近零。首先,
首先,您的
AskUser
方法错误地嵌套在另一个方法中-将其移出
其次:goto
仅在单个方法中有效;可以围绕单个堆栈帧跳转-不能在堆栈帧之间跳转
第三:你应该使用
goto
的次数。。。嗯,它不是很零,但它逐渐接近零。首先,你的AskUser
方法被错误地嵌套在另一个方法中-将它移出
其次:goto
仅在单个方法中有效;可以围绕单个堆栈帧跳转-不能在堆栈帧之间跳转
第三:你应该使用
goto
的次数。。。好吧,它不是很零,但它逐渐接近零。除非你必须去,否则不要使用goto!
正如@Marc gravel所说,它在单一方法中是有效的。
或者:您可以为Main方法中使用的代码u创建一个方法,然后从Main方法和使用goto语句的另一个方法调用它。
比如:
除非你必须去,否则不要使用goto! 正如@Marc gravel所说,它在单一方法中是有效的。 或者:您可以为Main方法中使用的代码u创建一个方法,然后从Main方法和使用goto语句的另一个方法调用它。 比如:
你可以这样做
public static Random randd = new Random();
public static void FlachCards()
{
Start:
if (AskAUser() == "Y")
{
goto Start;
}
}
public static String AskAUser()
{
Console.WriteLine("Enter Y to play again");
return Console.ReadLine();
}
你可以这样做
public static Random randd = new Random();
public static void FlachCards()
{
Start:
if (AskAUser() == "Y")
{
goto Start;
}
}
public static String AskAUser()
{
Console.WriteLine("Enter Y to play again");
return Console.ReadLine();
}
我对代码非常陌生。那就不要学着使用goto,你永远都不需要在c#中使用它。@Rotem好吧,“从不”是个很强的词。。。有些东西你不应该习惯性地使用,但当你确切地知道为什么要使用它时,它们确实有真正的用途。它可能是我一年用一次的东西…@MarcGravel在我看来,如果你知道如何使用
goto
,而不把事情搞得一团糟,那么你就知道应该忽略我的建议。我对编码非常陌生。那就不要学着使用goto,你永远都不需要在c#中使用它。@Rotem好吧,“从不”是个很强的词。。。有些东西你不应该习惯性地使用,但当你确切地知道为什么要使用它时,它们确实有真正的用途。它可能是我每年使用一次的东西…@MarcGravel在我看来,如果你知道如何使用goto
,而不会造成混乱,那么你就知道应该忽略我的建议。它不一定嵌套错误。C#现在支持本地函数,它们不必用static
关键字声明,即使它们是static
方法的一部分。它不一定嵌套不正确。C#现在支持本地函数,只需不使用static
关键字声明它们,即使它们是static
方法的一部分。
public static Random randd = new Random();
public static void FlachCards()
{
Start:
if (AskAUser() == "Y")
{
goto Start;
}
}
public static String AskAUser()
{
Console.WriteLine("Enter Y to play again");
return Console.ReadLine();
}