c# - 未分配的变量和“并非所有代码路径都返回值”解决方法?
问题描述
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
。我个人不喜欢这种解决方法,因为对我来说,感觉很草率。
我的问题是:有什么方法可以让猜测在方法开始时初始化但未分配,并且在方法执行结束时仍然设置并正确返回?
解决方案
输入正确的猜测后立即返回 - 并永远循环直到那时。您根本不需要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.");
}
}
推荐阅读
- c - 如何打印内存和缓冲区的长度?
- lua - 低 NumberValue 对脚本没有任何作用
- javascript - 在 Vue 2 中将 Dropbox filesListFolder 转换为树视图
- c# - 样式中的垂直对齐
- javascript - React.FunctionComponent 和普通的 JS 函数组件有什么区别?
- hashmap - 有没有更简洁的方法来改变哈希图中的向量?
- react-native - 为什么覆盖层不会消失?[react-native-modal-overlay]
- java - 递归文件搜索指定扩展名
- java - 如何制作从泛型超类扩展的非泛型类
- mysql - MySQL 如何从缓冲池中逐出页面?