未分配的变量和“并非所有代码路径都返回值”的解决方法?

foa*_*amu 3 c# methods performance return-value

private static char GetGuess()
{ 
    char guess;
    bool guessInputSuccess = false;

    while (!guessInputSuccess)
    { 
        Console.Write("Guess your letter: ");

        char.TryParse(Console.ReadLine().ToLower(), out guess); 

        if (!char.IsLetter(guess))
        { 
            Console.Write("You have not entered a letter from a-z."); 
        }
        else
        { 
            guessInputSuccess = true; 
        } 
    }

    return guess; 
}
Run Code Online (Sandbox Code Playgroud)

目前看来,我无法返回,guess因为它尚未分配。我通常会通过指定guess一个随机字符来解决这个问题。由于while循环将一直持续到输入az的有效字符为止,因此可以确信,返回时将az的字符分配给guess。我个人不喜欢这种解决方法,因为对我来说,它很草率。

我的问题是:有什么方法可以让猜测保持初始化,但在方法开始时仍未分配,并且仍然可以在方法执行结束之前正确设置和返回它?

Jon*_*eet 9

输入正确的猜测后,请立即返回-并一直循环直到此为止。您完全不需要guessInputSuccess,并且guess可以具有较小的范围:

private static char GetGuess()
{ 
    while (true)
    { 
        Console.Write("Guess your letter: ");
        if (char.TryParse(Console.ReadLine().ToLower(), out char guess) && 
            char.IsLetter(guess))
        {
            return guess;
        }
        Console.Write("You have not entered a letter from a-z."); 
    }
}
Run Code Online (Sandbox Code Playgroud)