public GameObject go1; // null
public GameObject go2; // null
public GameObject goTarget; // has value
void B1()
{
C1(go1);
}
void C1(GameObject g)
{
g = goTarget;
// go1 is null
}
void B2()
{
C2(out go2);
}
void C2(out GameObject g)
{
g = goTarget;
// go2 has value
}
go1是一个引用类型,为什么go1仍然用来传递。 在找到许多信息之后,我仍然无法理解为什么。
答案 0 :(得分:0)
它没有任何价值,因为你永远不会给它分配一个。有两种方法可以为字段分配值:
go1 = ...
)Foo(ref go1)
或Foo(out go1)
,并分配给{{1 {} {}}内的参数你不能做其中任何一个。当您致电ref
时,您正在复制Foo
(C1(go1);
)的当前值,并传递 。你没有通过对该领域的引用。
go1
是引用类型的事实实际上与此完全无关。这是因为"传递价值" vs"通过引用",完全不相关引用"引用类型" vs" value-type"尽管名字听起来很相似。