2014-04-03 142 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);

相關問題