通过ref传递对象

leo*_*ora 3 .net c# ref

有什么区别

public function Foo(ref Bar bar)
{
   bar.Prop = 1;
}

public function Foo(Bar bar)
{
   bar.Prop = 1;
}
Run Code Online (Sandbox Code Playgroud)

基本上什么是"参考"的重点.总是通过引用不是一个对象?

Jon*_*eet 10

关键是你永远不会传递一个对象.传递引用 - 参数本身可以通过引用或值传递.如果您更改参数值本身,它们的行为会有所不同,例如,将其设置为null或不同的参考值.随着ref这种变化影响调用者的变量; 没有ref它只是传递的值的副本,因此调用者看不到他们的变量有任何变化.

有关详细信息,请参阅我关于参数传递的文章


Dav*_*d M 9

是.但如果你这样做:

public function Foo(ref Bar bar)
{
   bar = new Bar();
}

public function Foo(Bar bar)
{
    bar = new Bar();
}
Run Code Online (Sandbox Code Playgroud)

然后你会看到差异.第一个传递对引用的引用,因此在这种情况下,bar会更改为新对象.在第二个,它没有.