在将一个字段分配给另一个字段时,C# 只是复制数据,还是实际创建链接? 在 this文章有一个游戏引擎结构的例子。那里的编码器有组件包含他们的 parent 。在 C# 中,它们是只包含父副本,还是引用它?
示例代码:
class World
{
...
public void Update()
{
...
ent.OnAttach(this);
...
}
...
}
class Entity
{
...
public void OnAttach(World world)
{
world_ = world;
}
...
}
Entity 对象现在可以访问 World 对象并可以访问它的字段和方法,就像文章中那样吗? (或者我误解了代码?)
最佳答案
因为您的数据类型 World
被定义为 class
而不是 struct
这意味着当您分配该类型的变量时,仅复制对相同数据的引用。
换句话说,无论您随后使用 world.SomeProperty = something
还是 world_.someProperty = something
,它们都将编辑内存中的同一个对象。
如果您将数据类型更改为struct
,那么整个数据结构将被复制,您将拥有相同数据的两个副本。
无论您如何定义数据,一旦您获得了对数据的引用,就可以访问其方法或属性。所以,是的,一旦您的 Entity 对象引用了 world 对象,它就可以访问其中的任何方法或属性(只要它们不是私有(private)的)。
关于c# - C# 只是在分配给另一个字段时复制字段数据还是引用数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2078974/