【发布时间】:2021-07-10 14:06:45
【问题描述】:
我正在编写一个 C# Windows 窗体应用程序。我有一个带有随机单词的标签,例如“电脑”。用户看到被覆盖的单词,在这个例子中:“--------”。用户必须通过逐字母猜测来猜测这个词是什么。我创建了按钮提示。该按钮负责显示一个随机字母。这是我创建的代码:
private void btnHint_Click(object sender, EventArgs e)
{
repeat:
Random rnd = new Random();
int rand = rnd.Next(corrArr.Length);
char letter = corrArr[rand];
if (letters.Contains(letter.ToString())) //check if the random letter is already used
{
goto repeat;
}
else
{
word.Text = "";
var idx = correct.IndexOf(letter);
wordArr[idx] = Convert.ToChar(letter);
foreach (var item in wordArr)
{
word.Text += item.ToString();
}
count++;
if (wordLen == count)
{
this.BackColor = Color.LimeGreen;
result.Text = "Win!!";
tb.Enabled = false;
btnClick.Visible = false;
}
}
letters.Add(letter.ToString());
}
通过goto 声明,如果前一个字母已被使用,我可以再次绘制一个字母。
我听说我不应该像在代码开头那样使用goto 语句,但程序运行良好。如何改进代码?
【问题讨论】:
-
使用 Goto 的理由很少,但循环不是。 (跳出一组深度嵌套的循环是)。 - 请阅读 101 教程!