while循环中检测到无法访问的代码

时间:2018-03-11 17:42:29

标签: c#

我有以下代码:

   public static int Number()
    {
        bool done = false;
        while (done == false)
        {
            try
            {
                string[] numbers = { "1", "2", "3", "4", "5", "6" };
                Console.WriteLine("Enter a number");
                int x = int.Parse(Console.ReadLine());
                Console.WriteLine(numbers[x]);
                Console.ReadLine();
                return x;
                done = true;
            }
            catch
            {
                Console.WriteLine("can't");
            }
        }
    }

我收到错误:

  

在' done = true;'。

中检测到无法访问的代码

我假设这与catch语句有关,但为什么会这样呢?我无法在这里解决错误。

3 个答案:

答案 0 :(得分:1)

无法联系到return后面的行。请参阅代码中的评论:

public static int Number()
{
    bool done = false;
    while (done == false)
    {
        try
        {
            string[] numbers = { "1", "2", "3", "4", "5", "6" };
            Console.WriteLine("Enter a number");
            int x = int.Parse(Console.ReadLine());
            Console.WriteLine(numbers[x]);
            Console.ReadLine();
            return x;  //THIS IS PREVENTING THE NEXT LINE
            done = true;
        }
        catch
        {
            Console.WriteLine("can't");
        }
    }
}
  

return语句终止执行它的方法   出现并将控制权返回给调用方法。它也可以回归   可选值。

答案 1 :(得分:1)

在循环退出后你实际上需要在while循环之外返回而不是从while循环中返回,只要while循环中断,它将返回{{1}的值保持值}:

x

另一个建议是,您可以简化public static int Number() { bool done = false; int x = 0; while (done == false) { try { string[] numbers = { "1", "2", "3", "4", "5", "6" }; Console.WriteLine("Enter a number"); x = int.Parse(Console.ReadLine()); Console.WriteLine(numbers[x]); Console.ReadLine(); done = true; } catch { Console.WriteLine("can't"); } } return x; } 循环条件,如:

while

答案 2 :(得分:0)

您无法在return后找到一行。

在你的情况下这一行:

Console.ReadLine();
return x; <---
done = true;