using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace practise_6._6
{
    class Program
    {
        static int FindMaxElement(int[] arry, out int MaxIdex)
        {
            int maxval = arry[0];
            MaxIdex = 0;
            for (int i = 1; i < arry.Length; i++)
            {
                if (maxval < arry)
                {
                    maxval = arry;
                    MaxIdex = i;
                }
                return maxval;
            }
        }
        static void Main(string[] args)
        {
            int[] MyArray = { 1, 8, 3, 6, 2, 5, 9, 3, 0, 2 };
            int MaxIndex;
            Console.WriteLine("the max element in array is {0}", FindMaxElement(MyArray, out MaxIndex));
            Console.WriteLine("the position of array is {0}", MaxIndex+1);
            Console.Read();
        }
    }
}
显示Error    2    'practise_6._6.Program.FindMaxElement(int[], out int)': not all code paths return a value    C:\Documents and Settings\acer\My Documents\Visual Studio 2008\Projects\practise_6.6\practise_6.6\Program.cs    望高手指点

解决方案 »

  1.   

    int FindMaxElement
    要返回一个整形,如果FOR不执行,你的不能返回
      

  2.   

            static int FindMaxElement(int[] arry, out int MaxIdex) 
            { 
                int maxval = arry[0]; 
                MaxIdex = 0; 
                for (int i = 1; i < arry.Length; i++) 
                { 
                    if (maxval < arry) 
                    { 
                        maxval = arry; 
                        MaxIdex = i; 
                    } 
                    return maxval; 
                }
                return 0; // <------------- 加上这一行! 
            } 
      

  3.   

    这样更合理:
              return maxval; // <------------- 加上这一行!
      

  4.   

    不是所有路径都有返回值
    static int FindMaxElement(int[] arry, out int MaxIdex) 
            { 
                int maxval = arry[0]; 
                MaxIdex = 0; 
                for (int i = 1; i < arry.Length; i++) 
                { 
                    if (maxval < arry) 
                    { 
                        maxval = arry; 
                        MaxIdex = i; 
                    } 
                    return maxval; 
                } 
            return maxval ;
            } 
      

  5.   

            static int FindMaxElement(int[] arry, out int MaxIdex) 
            { 
                int maxval = arry[0]; 
                MaxIdex = 0; 
                for (int i = 1; i < arry.Length; i++) 
                { 
                    if (maxval < arry) 
                    { 
                        maxval = arry; 
                        MaxIdex = i; 
                    } 
                    // return maxval;  // <----- 按这个方法的意义,这一行应该删除!
                }
                return maxval; // <------------- 加上这一行! 
            } 
      

  6.   

    for (int i = 1; i < arry.Length; i++) 因为存在i < arry.Length没有满足条件的i的情况,如果是这种情况就不返回值了
    所以,不是所有的情况都返回值