我对编码(尤其是 c#)相当陌生 - 这是编程基础类(class)的作业 - 我不是在寻找答案 - 我正在寻找有人解释为什么我会收到这两个“错误”我应该创建一个 bool 方法来检查用户是否猜测了刽子手游戏中的字母或完整单词。 我得到的错误是 - '检测到无法访问的代码 - 对于 idx++ 部分 - 这没有意义,因为我在其他单独的方法中使用了它。 和 Program.CheckGuess(char[], char[], char[], string: 并非所有代码路径都会返回值。
我知道我还没有完全完成这个方面。它可能正在盯着我的脸——只是在寻求一些指导。谢谢。
static bool CheckGuess(char[] secrets, char[] mask, char[] letters, string guess)
{
int misses = 0; bool condition = false;
for (int idx = 0; idx < secret.Length; idx++)
{
guess.ToCharArray();
if (mask[idx] == guess[idx])
{
//reveal character or word
condition = true;
}
else
{
misses = misses + 1;
condition = false;
}
return condition;
}
}
最佳答案
您应该明白,return
语句在执行时会使控制跳出方法并返回到调用者。
在您的代码中,您的 return
is 语句放置在 for 循环内。当执行for循环迭代时,控制立即跳出方法并返回到方法的调用者。
如您所知,for 循环头中的最后一部分 (idx++
) 在迭代完成执行时执行。但是,在您的情况下,迭代永远不会完成,因为当控制到达return
时它只是跳回到调用者。这就是发生第一个错误的原因。
您还应该了解,每个没有 void
作为返回类型的方法无论如何都需要return
。
如果 for 循环的条件(中间部分)永远不为 true
怎么办? for循环永远不会被执行,对吗?如果for循环没有执行,那么该方法应该返回什么?
该错误表明并非所有代码路径都会返回值,因为如果不执行 for 循环,该方法将不会返回。
要解决此问题,您只需将 return
语句移出 for 循环即可:
static bool CheckGuess(char[] secrets, char[] mask, char[] letters, string guess)
{
int misses = 0; bool condition = false;
for (int idx = 0; idx < secret.Length; idx++)
{
guess.ToCharArray();
if (mask[idx] == guess[idx])
{
//reveal character or word
condition = true;
}
else
{
misses = misses + 1;
condition = false;
}
}
return condition;
}
关于c# - 为什么会出现这些错误? C# - 刽子手游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38287674/