C#之ref练习

给自己复习的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ref与out的演示
{
    class Program
    {
        static void Main(string[] args)
        {

            #region 值类型的值传递和值类型的引用传递
            int i1 = 12;
            Console.WriteLine("before:{0}", i1);
            // changevalue(i1);值传递:把i1的值拷贝一份传递给value,在方法中值的改变,不会改变i1的值。
            changevalue(ref i1);//引用传递,相当于把i1的地址传递给,在方法中的改变也会改变i1的值。
            Console.WriteLine("after:{0}", i1); 
            #endregion
            #region 引用类型的值传递和引用传递
            int[] arr = { 12,14,19,30};
            changevalue(arr);
            Console.WriteLine("before:{0}",arr[0]);
            //传递的是arr数组的引用
            changevalue(arr);
            Console.WriteLine("after:{0}",arr[0]);
            changevalue(ref arr);
            Console.WriteLine("after:{0}",arr[0]);
            Console.WriteLine("after:{0}",arr[1]);
            Console.WriteLine("after:{0}", arr[2]);
            Console.WriteLine("after:{0}", arr[3]);
            #endregion

            Console.ReadLine();
        }
        static void changevalue(int value)
        {
            value = 34;
        }
        static void changevalue(ref int value)
        {
            value = 333;
        }
        static void changevalue(int[] arr)
        {
            arr[0] = 1221;
            
        }
        static void changevalue(ref int[] arr)
        {
            Console.WriteLine("method:before--{0}",arr[0]);
            arr = new int[] {233,155,166,189 };
        }

    }
}

 

posted @ 2013-11-04 23:12  王玏-加油  阅读(193)  评论(0)    收藏  举报