Ref/Out

Posted hanszimmer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ref/Out相关的知识,希望对你有一定的参考价值。

1.相同点

  ref/out中C#代替指针功能,按照地址传递,使用ref/out都将强行改变原有放在堆栈的值类型值。

  例子:

    (1)

    int a =1;

    Fun(a);

    ------------------

    (2)

    int b = 1;

    Fun(out/ref b);

    printf(b);

    -------------------

    比较两个a,区别就知道了。

  优点:我们需要把原有值类型值当参数传入某个方法时得到这个值类型的新值。(尤其在做sdk开发时用的多些)。

      另一个优点是,可以以这种Fun()里的多个参数返回给程序员想用的对应参数值。

2.不同点  

  ref:

    Fun()函数内部没有重新定义b的值,Fun外部的b值即为Fun内部b初始值

  out:

    Fun()函数内部有重新定义的b值,不承认Fun外部的b值,牛气的在Fun内部自己定义

  

以上是关于Ref/Out的主要内容,如果未能解决你的问题,请参考以下文章

引用参数,值参数,ref,out

C# 中的 Lambda 和 ref/out

Rhino Mocks - 使用 ref/out 参数模拟集合

浅谈c#的三个高级参数ref out 和Params

浅谈c#的三个高级参数ref out 和Params

C#中三个关键字params,Ref,out