首页 > 解决方案 > 赋值返回对象...帮助理解

问题描述

首先,这是一个代码片段:

Sprite corpse = Collider.SpriteTag(agent, "Corpse");

corpse.Unregistrate();

第一行调用'Collider'类的'SpriteTag'方法。此方法检查碰撞,但这在这里无关紧要。重要的是此方法返回一个 Sprite 对象(如果代理与标记对象之一发生碰撞,则将返回此对象(Sprite))。我为带有“Sprite corpse”的精灵分配内存,并将刚刚返回的对象加载到这个精灵中......

第二行是通过名为'Unregistrate()'的方法从精灵列表中删除该对象。上面提到的精灵列表是在初始化/创建/添加这些精灵时创建的。

两条线都运行良好,但我想到了一个菜鸟问题!

那么,“Unregistrate()”方法如何通过调用本地创建的对象“corpse”从列表中删除/删除正确的精灵?“尸体”对象是否具有与通过第一行方法加载(从“SpriteTag”返回)的对象相似的内存地址?

我真的很困惑,好像我定义(?)一个对象,这应该是它自己的内存地址吧?上面我传递/复制到这个相同类型的另一个对象(返回一个)。在这种情况下,“尸体”应该是一个不同的对象,即使所有数据(字段等)都是从返回的对象复制到其中的。那么,如何使用“尸体”对象删除原始精灵对象(碰撞器方法找到的对象)?

还是我完全误解了,当我将反对的原件退回到“尸体”中时,这与原件是一样的吗?如果我要构造 *'corpse'* 然后加载到其中会怎样?如果我想将“尸体”作为单独的对象处理,我应该先使用 Sprite 的构造函数,然后再加载到其中吗?

我希望每个人都明白我想问什么:)谢谢!

标签: c#classobjectreturnassignment-operator

解决方案


推荐阅读