【发布时间】:2020-09-18 13:00:01
【问题描述】:
你好! :D
所以,我在下面有这段代码。它正在工作,但我不会说它按我希望的方式工作。
所以,我使用goto 跳转到代码的末尾。但在if 的最后阶段,我有一个goto 导航到igen: Console.WriteLine("Remek! Estre 8-ra érted megyek!");。当这种情况发生时,我不希望下面的代码 ( nem: Console.WriteLine("Kár, pedig szívesen elhívtalak volna randizni. :(");) 运行。我怎样才能让它工作?
提前致谢!
using System.Reflection.Emit;
namespace Randi
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hány centi vagy?");
int cm = int.Parse(Console.ReadLine());
if (cm <= 175 && cm >= 150);
else goto nem;
{
Console.WriteLine("Naa, tök jó! Az alacsony lányok cukik.");
Console.WriteLine("Hány éves vagy?");
int év = int.Parse(Console.ReadLine());
if (év <= 18 && év >= 16);
else goto nem;
{
Console.WriteLine("Akkor még korban is összepasszolunk!");
Console.WriteLine("Van barátod?");
string kapcsolat = Console.ReadLine();
if (kapcsolat.Contains("Nincs"));
else goto nem;
{
Console.WriteLine("Örülök neki! Eljönnél velem randizni? (Igen/Nem)");
string randi = Console.ReadLine();
if (randi.Contains("Igen")) goto igen;
else goto nem;
}
}
}
igen:
Console.WriteLine("Remek! Estre 8-ra érted megyek!");
nem:
Console.WriteLine("Kár, pedig szívesen elhívtalak volna randizni. :(");
Console.ReadKey();
}
}
}
【问题讨论】:
-
您通常应该避免在 C# 中使用
goto。一般来说,这是一种巨大的代码气味,并且可能有一种更好的方式来构建您的代码。 -
取每个 goto 标签中的代码。把它放在一个方法中。像这样重构你的代码。删除无用的括号。检查 IF 的一致性。看看会发生什么……这不是魔术。它只是结构化编程与非结构化编程。 OOP 是下一个级别。
-
这显然不是使用
goto的情况。有一些,但我在一两年内只需要一次。
标签: c# if-statement goto