gpt4 book ai didi

c# - 初学者 C# 良好实践

转载 作者:太空宇宙 更新时间:2023-11-03 23:06:12 25 4
gpt4 key购买 nike

我刚开始使用 C#,我在这里编写了一个小程序。我只是想知道 goto 是否是返回到我的代码的某些部分的有效方法,或者是否有更合适和实用的方法。

namespace Section5Tests
{
class Program
{
static void Main(string[] args)
{
Start:
var number = new Random().Next(1, 10);
int secret = number;

Console.WriteLine("Secret Number is between 1 and 10. ");
for (var i = 0; i < 10; i++)
{
Console.WriteLine("Guess the secret number you only have 3 attempts!");
Middle:
var guess = Convert.ToInt32(Console.ReadLine());

if (guess == secret)
{
Console.WriteLine("WoW! You got it! Well done!");
goto Playagain;
}
else
{
Console.WriteLine("Incorrect! Try again");
goto Middle;
}

}
Console.WriteLine("Sorry you lost =(");
Playagain:
Console.WriteLine("Try Again? Y/N");
var answer = Console.ReadLine();

if (answer.ToLower() == "y")
{
goto Start;
}
else
{
Console.WriteLine("Thankyou for playing =)");
}
}
}
}

最佳答案

在 C# 中,执行此类操作的更好方法是将程序重构为具有唯一和描述性名称的单独方法。在 99.9% 的情况下,这是比使用 goto 更好的解决方案。

您通常不希望所有代码都在一个main 方法中。相反,我会将游戏本身重构为它自己的方法。然后,在主循环中,您只能检查用户是否正在播放。

static void Main (string[] args)
{
var isPlaying = true;
while (isPlaying)
{
isPlaying = PlayGame();
}

Console.WriteLine("Thankyou for playing =)");
}

那样的话,您可以让 PlayGame 方法返回一个 bool 值来指定用户是否仍在玩游戏。您可以使用检查变量和智能编码来控制程序的流程,而不是使用 goto:

static bool PlayGame ()
{
int number = new Random().Next(1, 10);
var userWon = false;

Console.WriteLine("Secret Number is between 1 and 10. ");
for (var numOfAttempts = 10; numOfAttempts > 0; numOfAttempts--)
{
Console.WriteLine($"Guess the secret number you only have {numOfAttempts} attempts!");

var guess = Convert.ToInt32(Console.ReadLine());
if (guess == number)
{
userWon = true;
break;
}

Console.WriteLine("Incorrect! Try again");
}

if (userWon)
Console.WriteLine("WoW! You got it! Well done!");
else
Console.WriteLine("Sorry you lost =(");

Console.WriteLine("Try Again? Y/N");
var answer = Console.ReadLine();

return answer.ToLower() == "y";
}

关于c# - 初学者 C# 良好实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41071348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com