using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ConsoleApplication1
{
    class Program
    {
       
        static void Main(string[] args)
        {
            int k;
            int L;
            int [] myNum=new int[5];
          //  int temp;           
            for (int i = 0; i < myNum.Length; i++)
            {
                Console.WriteLine("Please input the {0} Num:",i+1);                myNum[i] = int.Parse(Console.ReadLine());
            }            for (k = 0; k < myNum.Length-1 ; k++)
            {
                for (L = 1; L < myNum.Length-1-k ; L++)
                {
                    Swap(myNum[L], myNum[L+1]);
                    //if (myNum[L]>myNum[L+1]) 
                    //{
                    //    temp = myNum[L];
                    //    myNum[L]=myNum[L+1];
                    //    myNum[L+1]=temp;
                    //}                }
            }
            Console.WriteLine("Sorting is:");
            for (int i = 0; i < myNum.Length; i++)
            {
                Console.WriteLine("{0} ", myNum[i]);
            }
            Console.ReadLine();        }        private static void Swap(int num1, int num2)
        {
            int temp;
            if (num1 > num2)
            {
                temp = num1;
                num1 = num2;
                num2 = temp;
            }        }    }
}以上代码为什么没起作用,数字的顺序并没有变?(结果输出应是数字按大小顺序排列,但使用//内的语句就可以,我只是把它放进了一个自定义方法中而以)

解决方案 »

  1.   

    using System;
    using System.Collections.Generic;
     
    using System.Text;namespace ConsoleApplication1
    {
        class Program
        {        static void Main(string[] args)
            {
                int k;
                int L;
                int[] myNum = new int[5];
                // int temp;
                for (int i = 0; i < myNum.Length; i++)
                {
                    Console.WriteLine("Please input the {0} Num:", i + 1);                myNum[i] = int.Parse(Console.ReadLine());
                }            for (k = 0; k < myNum.Length - 1; k++)
                {
                    for (L = 1; L < myNum.Length - 1 - k; L++)
                    {
                        Swap(ref myNum[L],ref myNum[L + 1]);
                        //if (myNum[L]>myNum[L+1]) 
                        //{
                        // temp = myNum[L];
                        // myNum[L]=myNum[L+1];
                        // myNum[L+1]=temp;
                        //}                }
                }
                Console.WriteLine("Sorting is:");
                for (int i = 0; i < myNum.Length; i++)
                {
                    Console.WriteLine("{0} ", myNum[i]);
                }
                Console.ReadLine();        }        private static void Swap(ref int num1, ref int num2)
            {
                int temp;
                if (num1 > num2)
                {
                    temp = num1;
                    num1 = num2;
                    num2 = temp;
                }        }    }
    }
      

  2.   

    引用和内存的问题,加ref 或out  只是把num1和num2改变了,myNum指向的值是不会变的
      

  3.   

    楼上的请在原码的基础上改一下,thks.小弟新手
      

  4.   

    int[] a = { 4,2,9,5,1,7};
                Array.Sort(a);
                for (int i = 0; i < a.Length; i++)
                {
                    Console.Write(a[i].ToString() + " ");
                }
    public void Swap<T>(ref T x, ref T y) {T z = x; x = y; y = z; } 
      

  5.   

    只帮你修改语法
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;namespace ConsoleApplication1
    {
        class Program
        {        static void Main(string[] args)
            {
                int k;
                int L;
                int[] myNum = new int[5];
                // int temp;
                for (int i = 0; i < myNum.Length; i++)
                {
                    Console.WriteLine("Please input the {0} Num:", i + 1);                myNum[i] = int.Parse(Console.ReadLine());
                }            for (k = 0; k < myNum.Length - 1; k++)
                {
                    for (L = 0; L < myNum.Length - 1 - k; L++)
                    {
                        Swap(ref myNum[L], ref myNum[L + 1]);
                    }
                }
                Console.WriteLine("Sorting is:");
                for (int i = 0; i < myNum.Length; i++)
                {
                    Console.WriteLine("{0} ", myNum[i]);
                }
                Console.ReadLine();        }        private static void Swap(ref int num1,ref int num2)
            {
                int temp;
                if (num1 > num2)
                {
                    temp = num1;
                    num1 = num2;
                    num2 = temp;
                }        }    }
    }
      

  6.   

    这个问题小弟日前早已经解决了,用Ref,和楼上的一样,不过还是要给分,感谢参与.