现在的位置: 首页 > 综合 > 正文

【原创】C#中ref和out的异同

2012年08月26日 ⁄ 综合 ⁄ 共 999字 ⁄ 字号 评论关闭

  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都是按地址传递的方式。

抱歉!评论已关闭.