【发布时间】:2010-10-18 06:56:30
【问题描述】:
有什么区别
public function Foo(ref Bar bar)
{
bar.Prop = 1;
}
public function Foo(Bar bar)
{
bar.Prop = 1;
}
本质上“参考”的意义是什么。对象不是总是通过引用吗?
【问题讨论】:
有什么区别
public function Foo(ref Bar bar)
{
bar.Prop = 1;
}
public function Foo(Bar bar)
{
bar.Prop = 1;
}
本质上“参考”的意义是什么。对象不是总是通过引用吗?
【问题讨论】:
关键是你从来没有真正传递一个对象。您传递一个 reference - 参数本身可以通过引用或值传递。如果您更改参数值本身,它们的行为会有所不同,例如将其设置为 null 或其他参考。对于ref,此更改会影响调用者的变量;没有ref,它只是传递的值的副本,所以调用者看不到他们的变量有任何变化。
【讨论】:
是的。但如果你这样做:
public function Foo(ref Bar bar)
{
bar = new Bar();
}
public function Foo(Bar bar)
{
bar = new Bar();
}
然后你会看到不同。第一个传递对引用的引用,因此在这种情况下 bar 被更改为您的新对象。在第二种情况下,它没有。
【讨论】: