悟道人生

渴望闲云野鹤的生活,面对自然,鸟鸣虫唱,星辰为伴,没有拘束,没有苦恼,有的只是神仙般的生活

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

  C#中既可以通过值传递参数,也可以通过引用传递参数。通过引用传递参数,允许方法内成员改变参数的值,并保持更改。若要通过引用传递参数,可以使用ref和out关键字。ref和out的功能相当于C中的指针。

  ref和out都可以使参数按引用方式传递,但两者有一定的区别。

  1.ref传递参数时必须先初始化,而out传递参数时不需要事先初始化,但必须在方法中初始化。

  2.out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

  3.使用ref和out,在使用和定义方法时,参数之前都必须使用ref或out参数,对应起来。

具体看下面示例:

static void Main(string[] args)
        {
            
int i = 3;
            TestRef(
ref i);
            Console.WriteLine(
"执行ref后的值" + i.ToString());

            
int j;
            TestOut(
out j);
            Console.WriteLine(
"执行out后的值" + j.ToString());
            Console.Read();
        }

        
static void TestRef(ref int i)
        {
            Console.WriteLine(
"参数自增前的值" + i.ToString());
            i
++;
            Console.WriteLine(
"参数自增后的值" + i.ToString());
        }

        
static void TestOut(out int j)
        {
            j 
= 1;
            Console.WriteLine(
"参数自增前的值" + j.ToString());
            j
++;
            Console.WriteLine(
"参数自增后的值" + j.ToString());
        }

执行结果:

从上面结果我们可以看出,ref和out都是按地址传递的方式。

posted on 2009-04-09 14:49  凌风有约  阅读(1084)  评论(3编辑  收藏  举报