c# - 为什么会出现这些错误? C# - 刽子手游戏

标签 c#

我对编码(尤其是 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/

相关文章:

c# - 将 1,2,3,4,5,6,8,10,11 显示为 1-6,8,10-11

c# - 如何在 xaml 中定义和使用资源以便它们可以在 C# 中使用

c# - Xamarin-文件 :///android_asset

c# - xsd.exe 将类生成为单独的文件?

c# - 从 SQL 返回 2 个结果

c# - 发送相同的消息两次是针对 UDP 缺点的好策略吗?

c# - 名字和姓氏的数组连接

c# - 如何将同一列添加到 EF Core 中的所有实体?

c# - 使用已编译的 Lambda 表达式而不是 Activator.CreateInstance 来初始化 SoapHttpClientProtocol 对象

c# - NEST无法找到elasticsearch可以找到的文档