C#的参数传递方式为值传递,引用传递。

废话不说,先看例子。

1.值传递。(代码片段)

    int i = 0;
            int j;
            int[] arrayInt = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            Console.WriteLine("i=" + i);
            Console.WriteLine("arrayInt 的第一个参数值为:" + arrayInt[0]);
            Console.WriteLine("调用ChangeValue函数");
            ChangeValueByValue(i, arrayInt);
            Console.WriteLine("调用ChangeValueByValue函数后的值为:");
            Console.WriteLine("i=" + i);
            Console.WriteLine("arrayInt 的第一个参数值为:" + arrayInt[0]);
            Console.ReadLine();

     /// <summary>
        /// 值传递
        /// </summary>
        static void ChangeValueByValue(int intParam, int[] arrayParams)
        {
            intParam = 100;
            arrayParams[0] = 100;
        }

  在调用之后,原来i,j的值没有变。

2.ref 的引用传递(代码片段)

     Console.WriteLine("调用ChangeValueByRef函数前的值为:");
            ChangeValueByRef(ref i);// i必须被初始化,才能使用
            Console.WriteLine("i=" + i);
            //Console.ReadLine();
            Console.WriteLine("调用ChangeValueByOut函数后的值为:");
            ChangeValueByOut(out i);
            Console.WriteLine("i=" + i);

   /// <summary>
        /// ref 引用传递
        /// </summary>
        static void ChangeValueByRef(ref int intParam)
        {
            intParam = 100;
        }

   /// <summary>
        /// out 引用传递方式
        /// </summary>
        static void ChangeValueByOut(out int intParam)
        {
            intParam = 200;// 这次改为200
        }

 注意:ref与out 都为引用传递。区别在于:ref的参数必须是经过初试化的。out则没有这个限制。

如:本例中,当i没有赋值时,不能使用ref方式。

posted on 2011-06-23 15:32  Spider-Man  阅读(555)  评论(0)    收藏  举报