现在又ArrayList al,编写一个函数fun(),函数的参数是arrayList,实现对al的即时更改。是不是不能用 ref 啊 ?对于其他数据类型,例如:doDouble(ref mynum); static void doDouble( ref double mynum),就可以。大虾帮忙指点 !!怎么办 ??

解决方案 »

  1.   

    参考
      public static void Main(string[] args)
            {
                ArrayList al = new ArrayList();
                al.Add(1);
                al.Add(2);
                fun(ref al);
            }        private static void fun(ref ArrayList all)
            {
                all.Add(3);
                for (int i = 0; i < all.Count; i++)
                {
                    Console.WriteLine(all[i]);
                }
            }
      

  2.   

    static void Main(string[] args)
            {            ArrayList arr = new ArrayList();
                arr.Add(1);
                arr.Add(2);
                arr.Add(3);            Console.WriteLine("Old ArrayList:");            for (int i = 0; i < arr.Count; i++)
                {                Console.WriteLine("arr[" + i.ToString() + "]: " + arr[i].ToString());
                }            ChangeArr(ref arr);            Console.WriteLine("Changed ArrayList:");            for (int i = 0; i < arr.Count; i++)
                {
                    Console.WriteLine("arr[" + i.ToString() + "]: " + arr[i].ToString());
                }            Console.ReadLine();
            }
            private static void ChangeArr(ref ArrayList al)
            {
                for (int i = 0; i < al.Count; i++)
                {
                    al[i] = (int)al[i] + 10;
                }
            }
      

  3.   

     public static void Main(string[] args)
            {
                ArrayList al = new ArrayList();
                al.Add(1);
                al.Add(2);
                fun(ref al);
                for (int i = 0; i < al.Count; i++)
                {
                    Console.WriteLine(al[i]);
                }
            }        private static void fun(ref ArrayList all)
            {
                all.Add(3);
                for (int i = 0; i < all.Count; i++)
                {
                    Console.WriteLine(all[i]);
                }
            }
    1
    2
    3
    1
    2
    3
    请按任意键继续. . .
      

  4.   


    ArrayList 本身就是引用类型,要用Ref做什么??????
      

  5.   

    之所以你看到 static void doDouble( ref double mynum)
    是因为mynum是值类型,对值类型如果不用Ref或out来进行传地址的话,那么函数体中只是这个值类型的一个拷贝的操作,值本身不会改变