I have a class Cell:
public class Cell
{
public enum cellState
{
WATER,
SCAN,
SHIPUNIT,
SHOT,
HIT
}
When you instantiate an array, the items in the array receive the default value for that type. Thus for
T[] array = new T[length];
it is the case that for every i
with 0 <= i < length
we have array[i] = default(T)
. Thus, for reference types array[i]
will be null
. This is why you are seeing the NullReferenceException
. In your case Cell
is a reference type so since you have
HomeArray = new Cell [MAXCOL, MAXROW];
and all you have done is establish an array of references to Cell
s but you never assigned those references to instances of Cell
. That is, you told the compiler "give me an array that can hold references to Cell
s" but you did not tell the compiler "give me an array that can hold references to Cell
s and assign each of those references to a new instance of Cell
." Thus, the compiler will set the initial value of those references to null
. Therefore you need to initialize the HomeArray
:
for (int i = 0; i < MAXCOL; i++) {
for (int j = 0; j < MAXROW; j++) {
HomeArray[i, j] = new Cell();
}
}