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

问题描述

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; 
}

正如它目前的样子,我无法返回guess,因为它没有被分配。我通常解决这个问题的方法是分配guess一个随机字符。由于while循环将一直持续到输入来自 az 的有效字符,所以可以确信在它返回时,来自 az 的字符将被分配给guess。我个人不喜欢这种解决方法,因为对我来说,感觉很草率。

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

标签: c#performancemethodsreturn-value

解决方案


输入正确的猜测后立即返回 - 并永远循环直到那时。您根本不需要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."); 
    }
}

推荐阅读