【发布时间】:2014-11-21 07:49:54
【问题描述】:
我认为更清楚的是,如果我将引用类型参数传递给方法,那将在方法内部更改以添加 像这样的 ref 关键字
void Foo(ref Boo boo)
{
boo.Value = 6;
}
,即使这不会以任何方式影响程序执行,并且默认情况下对象是通过引用传递的,我不想更改 像这样在 void 内引用:
void Foo(ref Boo boo)
{
boo = new Boo();
}
因为我认为使用 ref 从方法签名中可以清楚地看出我将更改内部的 Boo 而不是仅仅阅读它。 你同意吗?您对此有何看法?
【问题讨论】:
-
ref 必须在像
Foo(ref boo)这样的 Foo 调用中显式使用,所以是的,这已经很明显对象将在函数中发生变化。 -
你征求意见,所以应该关闭问题。但是,不,您认为它更清楚,但对我来说恰恰相反
-
我认为使用 ref 关键字并没有真正增加任何价值。如果我们传入一个可变引用类型,则可以安全地假设它可能已发生变异。
-
@JameyD 实际上,这 并不 意味着“对象将被更改”。这意味着参数值是通过引用传递的,因此参数值可以改变。参数值不是对象,是never对象。参数值是对象的reference。
ref,在引用类型的上下文中,只是说:如果调用者将参数值重新分配给不同的引用:调用者将看到这种变化
标签: c# coding-style