在将一个字段分配给另一个字段时,C#是仅仅复制数据还是实际创建链接?在这个文章有游戏引擎结构的一个例子.那里的编码器包含其父组件.在C#中,它们只包含父副本,还是引用它?
示例代码:
class World
{
...
public void Update()
{
...
ent.OnAttach(this);
...
}
...
}
class Entity
{
...
public void OnAttach(World world)
{
world_ = world;
}
...
}
Run Code Online (Sandbox Code Playgroud)
Entity对象现在可以访问World对象并可以访问它的字段和方法,就像在artice中一样吗?(或者我误解了代码?)
因为您的数据类型World被定义为a class而不是a struct,这意味着当您分配该类型的变量时,仅复制对相同数据的引用.
在其他wrods中,无论你是否使用world.SomeProperty = something或者world_.someProperty = something他们将在内存中编辑相同的对象.
如果将数据类型更改为a,struct则将复制整个数据结构,并且您将拥有相同数据的两个副本.
无论您如何定义数据,一旦您拥有对数据的引用,您就可以访问其方法或属性.所以,是的,一旦您的Entity对象具有对world对象的引用,它就可以访问它上面的任何方法或属性(只要它们不是私有的).