我对C#和编码很新,所以请原谅我的无知。我已经尝试过研究,似乎我想要找到的东西可能是C ++中的一个“指针”,但在C#中却没有?我想要一个字段或属性,我可以将列表中的对象指定为“选定对象”并一直玩,直到我“释放”它。我试过这个:
Entity GrabbedEntity;
List<Entity> Entities;
if (mouseDown)
GrabbedEntity = Entities[3];
if (mouseUp)
GrabbedEntity = null;
我想要实现的基本上只是释放我分配给“grabbedEntity”的对象,而不是实际上将“Entities [3]”设为空值,我仍然希望能够修改grabbedEntity的值(mouseDown和= Entities [3]是为了简单起见,它可以是列表中的任何对象,具体取决于具体情况)。我一直在努力解决这个问题:
List<Entity> Entities;
List<Entity> _grabbedEntityList = new List<Entity>();
Entity GrabbedEntity
{
get
{
if (_grabbedEntityList.Count < 1) return null;
else return _grabbedEntityList[0];
}
set
{
if (value == null) _grabbedEntityList.Clear();
else
_grabbedEntityList.Clear();
_grabbedEntityList.Add(value);
}
}
}
这完全符合我的意图,我可以将“GrabbedEntity”分配给我的“实体”列表中的一个对象,而它被分配我可以做我想做的任何事情,然后如果我想发布它我只是将它设置为null,但我觉得我正在努力解决实际已存在的问题。感谢您的回复。
答案 0 :(得分:4)
你的第一种方法应该可以正常工作。
你说“我一直在努力解决这个问题:”但是你没有告诉我们你觉得你需要解决什么问题。如果您担心GrabbedEntity = null;
可能会将Entities[3];
设置为null,那么它就不会,如果您已经尝试过这种情况,那么您应该知道它没有。
对于第二种方法,get{}
和set{}
,我不知道你想要做什么,也不知道这个错综复杂的混乱是如何实现它的。