2012-01-22 3 views
1

모든 것을 초기화했지만 여전히 throw됩니다.배열 변수 초기화시 오류가 발생했습니다.

"개체 참조가 개체의 인스턴스로 설정되지 않았습니다."

Cell[,] cell; 
    bool[,] UpdateCell; 

    int AreaSizeX; 
    int AreaSizeY; 
    int MaxAge; 

    public void Reset(int areaSizeX, int areaSizeY, int maxAge) 
    { 
     AreaSizeX = areaSizeX; 
     AreaSizeY = areaSizeY; 
     MaxAge = maxAge; 

     cell = new Cell[AreaSizeX, AreaSizeY]; 
     UpdateCell = new bool[AreaSizeX, AreaSizeY]; 

     for (int i = 0; i < areaSizeX; i++) 
     { 
      for (int j = 0; j < areaSizeY; j++) 
      { 
       cell[i, j].Alive = false; //throws exception here ######### 
       cell[i, j].Age = 0; 

       UpdateCell[i, j] = false; 
      } 
     } 
    } 

이 코드의 잘못된 점은 무엇입니까? C#은 동적 배열 생성을 허용하지 않습니다?

답변

4

Cell은 클래스 (참조 유형)라고 가정합니다. 배열의 요소는 이고, 참조 번호는입니다. 배열을 만들고 있지만 모든 요소는 기본적으로 null입니다.

for (int i = 0; i < areaSizeX; i++) 
{ 
    for (int j = 0; j < areaSizeY; j++) 
    { 
     cell[i, j] = new Cell(); 
     cell[i, j].Alive = false; 
     cell[i, j].Age = 0; 

     UpdateCell[i, j] = false; 
    } 
} 

아니면 나이와 생동감 복용하여 Cell 클래스 생성자를 줄 수 : 당신은 아마 원하는

for (int i = 0; i < areaSizeX; i++) 
{ 
    for (int j = 0; j < areaSizeY; j++) 
    { 
     cell[i, j] = new Cell(false, 0); 
     UpdateCell[i, j] = false; 
    } 
} 

을 또는 속성을 설정하는 개체 이니셜 라이저를 사용의

for (int i = 0; i < areaSizeX; i++) 
{ 
    for (int j = 0; j < areaSizeY; j++) 
    { 
     cell[i, j] = new Cell { Alive = false, Age = 0}; 
     UpdateCell[i, j] = false; 
    } 
} 
+0

을 물론, 나는 Skeet을 입력 할 수있는 것처럼. ;) –

+0

오, 그는 얼마나 빨리 대답 했는가! –

관련 문제