namespace out关键字
{
    class Program
    {
        static int maxvalue(int[] intarray, out int maxindex)
        {
            int maxval = intarray[0];
            maxindex = 0;
            for (int i = 1; i < intarray.Length; i++)
            {
                if (intarray[i] > maxval)
                
                    maxval = intarray[i];
                    maxindex = i;
                }
                return maxval;
                
            
        }
        static void Main(string[] args)
        {
            int[] myarray ={ 1, 8, 3, 6, 2, 5, 9, 3, 0, 2 };
            int maxindex;
            Console.WriteLine("最大数是{0}", maxvalue(myarray, out maxindex));
            Console.WriteLine("最大数为数组的第{0}个", maxindex+1);
            Console.ReadKey();
        }
    }
}
照理说,最大数为数组的第{0}个,应该输出的7,为什么我一直是10?
实在搞不懂.我高手们请教

解决方案 »

  1.   

    少了一对括号,这样就可以了:
    using System;namespace out关键字
    {
    class Program
    {
    static int maxvalue(int[] intarray, out int maxindex)
    {
    int maxval = intarray[0];
    maxindex = 0;
    for (int i = 1; i < intarray.Length; i++)
    {
    if (intarray[i] > maxval)
    {
    maxval = intarray[i];
    maxindex = i;
    }
    }
    return maxval;
    }
    static void Main(string[] args)
    {
    int[] myarray = { 1, 8, 3, 6, 2, 5, 9, 3, 0, 2 };
    int maxindex;
    Console.WriteLine("最大数是{0}", maxvalue(myarray, out maxindex));
    Console.WriteLine("最大数为数组的第{0}个", maxindex + 1);
    Console.ReadKey();
    }
    }
    }
      

  2.   

     if (intarray[i] > maxval)
      {  
      maxval = intarray[i];
      maxindex = i;
      }
    加组大括号就行了
      

  3.   

     for (int i = 1; i < intarray.Length; i++)
      {
      if (intarray[i] > maxval)
        {
          maxval = intarray[i];
          maxindex = i;
        }
      }
    显然是if没加括号
      

  4.   

     
    //这样写 更高效  
       int[] myarray = { 1, 8, 3, 6, 2, 5, 9, 3, 0, 2 };
                   int i= myarray.Max(); //9
      

  5.   

    static int maxvalue(int[] intarray, out int maxindex)
      {
      int maxval = intarray[0];
      maxindex = 0;
      for (int i = 1; i < intarray.Length; i++)
      {
        if (intarray[i] > maxval)
        
        {
          maxval = intarray[i];
          maxindex = i;
        }
      }
      return maxval;
        
        
      }
    这样就可以了
      

  6.   

    原因在于 if语句 如果不用{} 的话 就只执行下面的一句!所以maxindex = i;
    执行了九次!当你执行Console.WriteLine("最大数为数组的第{0}个", maxindex+1)时
    maxindex+1=10
      

  7.   

    在c#中可以用写了If之后连续按两个Tab键就会出现下面的情况:
    if(true)
    {}可以避免忘记加大括号