有没有更正确的方法来实现我正在做的事情?

时间:2016-09-28 14:49:59

标签: c#

我对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,但我觉得我正在努力解决实际已存在的问题。感谢您的回复。

1 个答案:

答案 0 :(得分:4)

你的第一种方法应该可以正常工作。

你说“我一直在努力解决这个问题:”但是你没有告诉我们你觉得你需要解决什么问题。如果您担心GrabbedEntity = null;可能会将Entities[3];设置为null,那么它就不会,如果您已经尝试过这种情况,那么您应该知道它没有。

对于第二种方法,get{}set{},我不知道你想要做什么,也不知道这个错综复杂的混乱是如何实现它的。