static int MaxValue (int[] intArray, out int maxIndex)// MaxValue 并不是所有路径代码都有返回值
        {
            int maxVal = intArray[0];
            maxIndex = 0;
            for (int i = 1; i < intArray.Length; i++)  //运行提示我i++无效
            {
                if (intArray[i] > maxVal)
                {
                    maxVal = intArray[i];
                    maxIndex = i;
                }
                return maxVal;
            }
        }
        static void Main(string[] args)
        {
            int[] myArray = { 1, 2, 5, 9, 4, 7, 3, 2, 3, 0 };
            int maxIndex;
            Console.WriteLine ("The maxnum value myArray is {0}", MaxValue(myArray ,out maxIndex));
            Console.WriteLine ("The first occurrence of this value is at element {0}",maxIndex+1);
            Console.ReadKey ();        
高手帮我看下怎么回事?

解决方案 »

  1.   

    return 不能放在循环里面,一个方法中只能有一个返回值,你循环的话不是有多个了
      

  2.   

       static int MaxValue(int[] intArray, out int maxIndex)// MaxValue 并不是所有路径代码都有返回值 
            {
                int maxVal = intArray[0];
                maxIndex = 0;
                for (int i = 1; i < intArray.Length; i++)  //运行提示我i++无效 
                {
                    if (intArray[i] > maxVal)
                    {
                        maxVal = intArray[i];
                        maxIndex = i;
                    }
                    return maxVal;
                }
                return -1;  //你在for里没有进行return  如果intArray.Length==1 
    那就不会执行循环 那你就没有返回
            } i++ 同样 你在执行一次循环的时候 i++ 不会被执行.
      

  3.   

    这个观点不能认同
    像这样
    for(int i=1;i<10;i++)
    {
       if(i==5)
       {
          return true
       }
    }
    return false;将return maxVal放在for外面就保证都有返回了
      

  4.   

            static int MaxValue(int[] intArray, out int maxIndex)// MaxValue 并不是所有路径代码都有返回值 
            {
                int maxVal = intArray[0];
                maxIndex = 0;
                for (int i = 1; i < intArray.Length; i++)  //运行提示我i++无效 
                {
                    if (intArray[i] > maxVal)
                    {
                        maxVal = intArray[i];
                        maxIndex = i;
                    }
                }
                return maxVal;
            }把return语句提出到循环外边来
      

  5.   

    1楼回答有误,实际上放在循环中的return不会return多次,而是当循环到第一个return时就返回值并跳出该函数了
    也就是说在循环体内放一个必定被执行的return是没意义的,除非是写在if里