C# 我如何修正我的列表,让它一次检查一个字母?

C# 我如何修正我的列表,让它一次检查一个字母?,c#,string,char,listbox,C#,String,Char,Listbox,我正在学习c#basics,我需要创建一个拼写测试/绞刑架,用户将在其中输入单词,如果它与秘密单词匹配,将按字母进行检查。我已经创建了一个for循环来检查单词,但是出现了一个错误,说它只能在字母上,因为它当然是字符?有办法解决这个问题吗 public frmMain() { InitializeComponent(); string[] listwords = new string[10]; listwords[

我正在学习c#basics,我需要创建一个拼写测试/绞刑架,用户将在其中输入单词,如果它与秘密单词匹配,将按字母进行检查。我已经创建了一个for循环来检查单词,但是出现了一个错误,说它只能在字母上,因为它当然是字符?有办法解决这个问题吗

     public frmMain()
    {
        InitializeComponent();


               string[] listwords = new string[10];
        listwords[0] = "jungle";
        listwords[1] = "forest";
        listwords[2] = "horse";
        listwords[3] = "beetle";
        listwords[4] = "nature";
        listwords[5] = "monkey";
        listwords[6] = "autumn";
        listwords[7] = "spring";
        listwords[8] = "flower";
        listwords[9] = "birds";

        Random randGen = new Random();
        var idx = randGen.Next(0, 9);
        string guessWord = listwords[idx];
        char[] guess = new char[guessWord.Length];
        Console.Write("please enter your guess : ");

        for (int i = 0; i < guessWord.Length; i++)
            guess[i] = '*';

        while (true)
        {
            char userGuess = char.Parse(txtGuess.Text);
            for (int i = 0; i < guessWord.Length; i++)
            {

                if (userGuess == guessWord[i])
                    guess[i] = userGuess;
            }

        }
    }
public frmMain()
{
初始化组件();
string[]listwords=新字符串[10];
listwords[0]=“丛林”;
listwords[1]=“森林”;
listwords[2]=“马”;
listwords[3]=“甲虫”;
listwords[4]=“自然”;
listwords[5]=“猴子”;
listwords[6]=“秋天”;
listwords[7]=“spring”;
listwords[8]=“花”;
listwords[9]=“鸟”;
Random randGen=新的Random();
var idx=randGen.Next(0,9);
字符串猜测词=列表词[idx];
char[]guess=新字符[guessWord.Length];
控制台。写下(“请输入您的猜测:”);
for(int i=0;i
一些提示:

//all this
char[] guess = new char[guessWord.Length];
for (int i = 0; i < guessWord.Length; i++)
        guess[i] = '*';


//can be replaced with
char[] guess = new string('*', guessWord.Length).ToCharArray();
字符串可以像数组一样进行索引<代码>“你好世界”[3]
是字符
l
。在文本末尾添加一个
*
,并获取第一个字符
[0]
,这是相对健壮的;它的长度将始终至少为1,如果用户没有输入任何内容,则该操作为no op(将*替换为*)


您在构造函数中的while循环中的代码应该放在按钮单击处理程序中。在表单中添加一个按钮,双击它并将代码放入其中。构造函数中没有无限循环


您的
string guessWord
char[]guess
应该是类级属性/字段,以便在单击按钮之间记住它们的状态

什么是
txtGuess
?您将控制台应用程序与WinForms应用程序混淆了。在窗体的构造函数中不能有
while(true)
循环。GUI甚至不会出现。在做其他事情之前先解决这个问题。或者制作一个控制台应用程序。
//this fails if .Text is not a string of length 1
char userGuess = char.Parse(txtGuess.Text);

//consider this:
char userGuess = (txtGuess.Text + '*')[0];