2014-04-03 6 views
1

저는 초보 프로그래머이므로 잘못된 것을 이해하는 데 도움이 필요합니다. 생성자가 내 플레이어를 만드는 객체를 만듭니다. 그러나 내 생성자를 마자 마자 다른 개체 안에 craeted 모든 개체는 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; 
     } 
    } 
} 
+5

힌트 : 컴파일러 _ 경고 _ _을 (를)보십시오. –

답변

11

당신은 클래스의 본체에 Buscador busc1;를 정의 그래서 대신 :

Buscador busc1 = new Buscador(50); 

단순히 첫번째 하나를 수행하여

busc1 = new Buscador(50); 

쓰기, 당신은 당신이 원하는 것을 말 그것을 인스턴스화하는 메소드에 로컬 인 Buscador 인스턴스를 작성하십시오. 따라서 메서드가 끝나면 제거되고 다른 메서드에서는 액세스 할 수 없습니다.

Buscador busc1;Tablero() 외부 생성자는 전체 클래스의 모든 메소드에 액세스 할 수 있습니다.

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

0

Buscador busc1 = new Buscador(50); 이제 생성자에서 지역 변수가되고, 당신은 시험 방법을 통해 busc1 인스턴스 변수를 호출하고 있습니다 :

는 범위 지정에 대해이 MSDN 문서를 참조하십시오. 이 문제를 해결하기 위해 생성자에서 다른 참조 변수를 만들지 마십시오. 다음과 같이 인스턴스 참조 변수를 사용하십시오. busc1 = new Buscador(50);

관련 문제