在构造函数中创建的对象变为null

时间:2014-04-03 20:53:17

标签: c# object null

我是一名新手程序员,我需要一些帮助来理解错误。 我创建了一个对象,其中构造函数我创建了我的玩家。但是,只要我完成构造函数,所有在另一个内部的对象都是null。对象是否无法创建对象?如果不能,我怎样才能设计我的程序,以便我可以从任何课程中访问我的播放器对象。?

class Program
{
    static void Main(string[] args)
    {
        Tablero tablero = new Tablero();
        tablero.test();    //now Tablero doesnt have player
        Console.ReadLine();
    }

    public class Tablero
    {
        Buscador busc1;
        public Tablero()
        {
            Buscador busc1 = new Buscador(50);
            //test();       same problem
        }
        public void test()
        {
            Console.Write(busc1.getPosX());
        }
    }

    public class Buscador
    {
        int posx;
        public Buscador(int posx)
        {
            this.posx = posx;
        }
        public int getPosX()
        {
            return posx;
        }
    }
}

2 个答案:

答案 0 :(得分:12)

您已在班级主体中定义了Buscador busc1;,而不是:

Buscador busc1 = new Buscador(50);

简单地写

busc1 = new Buscador(50);

通过执行第一个,您说要在实例化它的方法中创建Buscador的实例。因此,一旦方法结束并且无法从任何其他方法访问它,它将被删除。

Buscador busc1;构造函数之外定义的

Tablero()可供整个类中的任何方法访问。

请参阅此MSDN关于范围界定的文章:

http://msdn.microsoft.com/en-us/library/ms973875.aspx

答案 1 :(得分:0)

Buscador busc1 = new Buscador(50);现在变成构造函数中的局部变量,并且您通过测试方法调用busc1实例变量。至于解决这个问题,不要在构造函数中创建其他引用变量。使用实例引用变量,如:busc1 = new Buscador(50);