【发布时间】:2019-11-22 16:21:14
【问题描述】:
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 循环将一直持续到输入来自 a-z 的有效字符,所以可以确信在它返回时,来自 a-z 的字符将被分配给 guess。我个人不喜欢这种解决方法,因为对我来说,感觉很草率。
我的问题是:有什么方法可以让猜测在方法开始时初始化但未分配,并且在方法执行结束时仍然设置并正确返回?
【问题讨论】:
-
char是一个值类型,所以它必须包含一个值。如果您不想使其成为char?,那么您可以使用char guess = default(char)来减轻随机值的草率。 -
char.IsLetter将返回true用于非 a-z 之间的字母,例如希腊字母 gamma、γ。如果您想将其限制为仅 a-z,则需要测试guess >= 'a' && guess <= 'z'。
标签: c# performance methods return-value