我创造了一个Hangman游戏。但所有代码都在GUI中。我一直在阅读大量的编程书籍,我想使用函数,真正编程面向对象,而不是将所有内容都放在GUI中。所以我尝试创建一个生成随机单词的函数,但它不起作用。它会抛出一个错误:类型为#System; Stack.StackOverflowException'的未处理异常发生在mscorlib.dll。
class GetSecretWord
{
public static string GetWord()
{
string unsortedwords = "master,bother,bucket,legend,method";
List<string> sortedwords = unsortedwords.Split(',').ToList();
int index = new Random().Next(sortedwords.Count);
string secretWord = sortedwords[index];
return GetWord();
}
}
我做错了什么?
另外,在我的表单代码中:
private void btn_Play_Click(object sender, EventArgs e)
{
string theSecretWord = GetSecretWord.GetWord();
MessageBox.Show(theSecretWord);
}
我使用消息框来测试它是否有效,但它没有......
答案 0 :(得分:2)
将您的回报更改为返回secretWord
public static string GetWord()
{
string unsortedwords = "master,bother,bucket,legend,method";
List<string> sortedwords = unsortedwords.Split(',').ToList();
int index = new Random().Next(sortedwords.Count);
string secretWord = sortedwords[index];
return secretWord;
}
现在你递归调用导致堆栈溢出异常的函数。