请问C#只是场数据复制上分配给另一个字段或引用的数据?

StackOverflow https://stackoverflow.com/questions/2078974

  •  21-09-2019
  •  | 
  •  

目前分配一个场到另一个,莫非C#刚刚超过复制数据,或实际上创建链接? 在文章有游戏引擎结构的一个例子。编码器有具有组件,包含他们的父母。在C#中,难道他们只包含父副本,或者它们指的是什么?

实施例的代码:

class World
{
    ...
    public void Update()
    {
        ...
        ent.OnAttach(this);
        ...
    }
    ...
}

class Entity
{
    ...
    public void OnAttach(World world)
    {
        world_ = world;
    }
    ...
}

能否实体对象现在访问世界对象,并有机会获得它的属性和方法,像条每页? (或I误解码?)

有帮助吗?

解决方案

由于数据类型World被定义为class而不是struct这意味着,当分配该类型的变量,只有参考到相同的数据被复制。

在其它wrods,你是否再使用world.SomeProperty = somethingworld_.someProperty = something它们将在内存中编辑相同的对象。

如果你改变了的数据类型是一个struct然后整个数据结构将被复制,你将有相同的数据的两个副本。

不管如何定义数据,一旦你必须然后就可以访问它的方法或属性的数据的引用。所以,是的,一旦你的实体对象有世界对象的引用可以访问它的任何方法或属性(只要它们不是私有的)。

其他提示

这取决于World类型。如果它是一个引用类型(类),复制的参考将指向同一对象,从而改变由新的参考指出将影响原始对象中的对象(不创建新对象)。这是贴在样品的情况下。该字段将简单地指的是相同World对象。

如果该World类型值类型,它被复制(及其内容)和将成为一个完全不同的值,改变将不会影响原来的。

作为实体与世界是类(即“引用类型”),那么就要只需要相互引用。如果一个是结构(即,“值类型”),则enite事情会被复制。

您应该看看通过引用传递和由值传递。你的世界对象是一个按引用传递的,所以你传递一个参照位置在内存中的数据这个对象包含所在。

实体可以现在只访问世界对象的公共方法,属性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top