Estoy recibiendo un error llamado "System.NullReferenceException:" en mi programa de C#.
He buscado en esta web cómo solucinarlo y he leído que suele ser porque no se hace uso de la inicialización, por lo que los valores a los que es trata de acceder quedan como "nulos".
Sin embargo, estoy revisando y veo que sí inicializo dichos valores usando el "new" (o al menos creo que sí lo hago).
Este es el fragmento problemático del código:
public bool load(string fileName)
{
// Read the board from "fileName" and fill the _cells with its information
try
{
using (StreamReader sr = new StreamReader(fileName))
{
int validLines = 0;
int currentRow = 0;
string line = sr.ReadLine();
while (line != null)
{
if (validLines == 0)
{
int.TryParse(line, out _numRows);
validLines++;
}
else if (validLines == 1)
{
int.TryParse(line, out _numCols);
validLines++;
_cells = new Cell[_numRows, _numCols]; /*INICIALIZO LA ARRAY CELL*/
}
else
{
int currentCol = 0, j = 0;
for (int i = 0; i < _numCols; i++)
{
j++;
if ((line[j] > 0 && line [j] < 9) || line [j] == 'B' || line[j] == 'V')
{
_cells[currentRow, currentCol] = new Cell(CellState.Covered, line[j]); /*INICIALIZO CADA INSTANCIA DE LA ARRAY CELL*/
currentCol++;
}
else
{
i--;
}
}
currentRow++;
}
}
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
}
catch (Exception e)
{
Console.WriteLine("The file could not be read");
Console.WriteLine(e.Message);
return false;
}
return true;
}
public void print()
{
// Print the content of the board
for (int i = 0; i < _numRows; i++)
for (int k = 0; k < _numCols; k++)
{
Console.Write(" " + _cells[i, k].getContent());
//AQUÍ ES DONDE ME NOTIFICA QUE SUCEDE EL ERROR
}
}
Console.ReadKey();
}
¿Alguien puede localizar dónde radica el error? Entiendo que por alguna razón los valores en la array _cells[] quedan como null, por eso cuando aplico el método print() el programa peta y me devuelve error.
Gracias.