为什么我会收到错误'无法访问的代码'?

时间:2017-01-13 13:26:06

标签: c#

using System;

namespace G09 {
    class Reverse {
        static void Main() 
        {
            Console.WriteLine(ReverseText(24));

            Console.ReadKey();
        }

        static string ReverseText(int n) {
            if (n < 1) 
            {
                return "";
            }

            string index = "1";
            string revIndex = "";
            int count = 1;
            string[] arr = new string[n];

            for (int i = 0; i < n; i++) 
            {
                arr[i] = index + revIndex;
                for (int j = 0; j <= i; j++) 
                {
                    if (count > 8) 
                    {
                        index = index + 0;
                        count = 0;
                        break;
                    }
                    index = index + (count++ + 1).ToString();
                    break;
                }
                revIndex = "";
                for (int k = index.Length - 1; k >= 0; k--) 
                {
                    if (k == index.Length - 1) 
                    {
                        continue;
                    }
                    revIndex += index[k];
                }
            }    
            return string.Join("\n", arr);
        }
    }
}
  

/tmp/csharp117013-18-5s54om.vh6mt2o6r/code.cs(10,41):警告CS0162:   检测到无法访问的代码

有谁能告诉我为什么第23行无法访问此代码? 我无法理解......在视觉工作室中它工作正常,但在其他节目中出错。

3 个答案:

答案 0 :(得分:7)

由于j++在最后,break删除了其中之一,因此for (int j = 0; j <= i; j++) { ... break; } 毫无意义

O((Q + N) log N)

答案 1 :(得分:5)

你永远不会增加break,因为你在第一次循环后for (int j = 0; j <= i; j++) //<- Error here, j++ will never be reached { if (count > 8) { index = index + 0; count = 0; break; } index = index + (count++ + 1).ToString(); break; //you leave the for loop here } 迭代

n1 = Node1()
n2 = Node1()
n2.connect_input('num1', n1.outputs, 'num2')

答案 2 :(得分:2)

你的问题在于for for循环:

break

我猜测for循环从第23行开始。因为你在for循环中包含j++语句的所有路径,for循环的j部分永远不会被命中。在执行变量C的增量之前,循环将执行一次并中断。