C#从一个类访问成员变量到另一个类

时间:2016-12-04 23:52:52

标签: c#

所以我正在使用两个文件:模拟器和环境。在环境文件中,我有一个名为“Entities”的成员变量。它在那里定义,它有构造函数和get-set函数。我的Simulator类的代码中包含了Environment类;使用构造函数和set-get函数。

现在我正在尝试使Environment类在Simulator类中工作。我现在的代码应该在我在Simulator类中编写的for循环代码中包含环境成员变量“Entities”

我收到的错误是当前上下文中不存在变量成员。但是,我想让计算机知道成员变量来自Environment类。我该如何解决这个错误?我正在使用C#。

这是我遇到问题的代码:

run()方法,来自我的模拟器类

    public void run()
    {
        for (int i = 0; i < 50 && entities.Count > 1; i++)
        {
            entities.RemoveAll(m => !m.IsAlive());

            step(i);
        }

    }

这是环境类。

#region ENVIRONMENT CLASS
  //__________________//
 //   ENVIRONMENT    //
//__________________//
public abstract class ENVIRONMENT
{
    private List<ENTITY> entities;

    public ENVIRONMENT()
    {
        entities = new List<ENTITY>();
    }

    public void AddEntity(ENTITY e)
    {
        entities = new List<ENTITY>();
        entities.Add(e);
        Random rand = new Random();

        foreach (ENTITY element in entities)
        {
            int locX = rand.Next(0, 9);
            int locY = rand.Next(0, 9);
            element.X = locX;
            element.Y = locY;

            //element.LocalPoint.X = locX;
            //element.LocalPoint.Y = locY;
        }
    }

    public ICollection<ENTITY> Population
    {
        get { return entities; }
    }
}
编辑:之前我为实体提供了另一个名称,那就是List,所以我改了它。

1 个答案:

答案 0 :(得分:0)

我没有看到名为LIST的字段,但我确实看到名为entities的字段,类型为LIST<ENTITY>

为您的internal变量添加publicget entities属性访问器,并在类实例化时将entities初始化为空列表。

另外,为什么所有的班级名称(显然)完全是大写的?

public abstract class ENVIRONMENT
{
    private List<ENTITY> entities = new List<ENTITY>();

    public List<ENTITY> Entities
    {
        get { return entities; }
    }
...
}