2014-04-03 84 views
1

我是新手程序员,我需要一些帮助来理解错误。 我创建了一个对象,我在其中创建我的玩家的构造函数。然而,只要我完成我的构造函数,其他所有对象都是空的。对象不可能创建对象吗?如果不是,我该如何设计我的程序,以便我可以从任何课程中访问我的播放器对象。在构造函数中创建的对象变为空

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; 
     } 
    } 
} 
+5

提示:看看编译器_warnings _... –

回答

11

你已经在类的主体定义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

0

Buscador busc1 = new Buscador(50);目前已成为构造一个局部变量,而你通过测试方法调用busc1实例变量。至于解决这个问题,不要在构造函数中做其他的引用变量。使用实例引用变量,如:busc1 = new Buscador(50);

相关问题