我是一名新手程序员,我需要一些帮助来理解错误。 我创建了一个对象,其中构造函数我创建了我的玩家。但是,只要我完成构造函数,所有在另一个内部的对象都是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;
}
}
}
答案 0 :(得分:12)
您已在班级主体中定义了Buscador busc1;
,而不是:
Buscador busc1 = new Buscador(50);
简单地写
busc1 = new Buscador(50);
通过执行第一个,您说要在实例化它的方法中创建Buscador的实例。因此,一旦方法结束并且无法从任何其他方法访问它,它将被删除。
在Buscador busc1;
构造函数之外定义的 Tablero()
可供整个类中的任何方法访问。
请参阅此MSDN关于范围界定的文章:
答案 1 :(得分:0)
Buscador busc1 = new Buscador(50);
现在变成构造函数中的局部变量,并且您通过测试方法调用busc1
实例变量。至于解决这个问题,不要在构造函数中创建其他引用变量。使用实例引用变量,如:busc1 = new Buscador(50);