When I compile and run the program I get an error:

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.

at ElevationModel.ReadDem(String inFileName)

at Program.Main()

using System; using System.IO; class GridPoint { private int row; private int column; public GridPoint( int row, int column) { this. row = row; this. column = column; } public int Row { get{return row;} } public int Column { get{return column;} } public override string ToString() { return (String.Format("{0,4}{1,4}",row,column)); } } class ElevationModel { private string title; private double[ , ] elevations = null; private int row; private int column; public ElevationModel(string inFileName) { ReadDem(inFileName); } public string Title { get{return title;} } public int Rows { get{return row;} } public int Columns { get{return column;} } public double Elevation(int row, int column) { return elevations[row,column]; } private void ReadDem(string inFileName) { StreamReader inStream = new StreamReader(inFileName); title = inStream.ReadLine(); string line; string [] splittedLine; row = int.Parse(inStream.ReadLine()); column = int.Parse(inStream.ReadLine()); for(int i = 0; i< row; i++) { line = inStream.ReadLine(); splittedLine = line.Split(','); for (int j = 0; j < column; j++) { elevations[i, j] = double.Parse(splittedLine[j]); } } inStream.Close(); } public void WriteDem(string outFileName) { StreamWriter outStream = new StreamWriter(outFileName); outStream.WriteLine(title); outStream.WriteLine("{0}", row); outStream.WriteLine("{0}", column); for (int i = 0; i < row; i++) { for (int h = 0; h < column; h++) { outStream.WriteLine(elevations [i,h]); } outStream.WriteLine(); } outStream.Close(); } public GridPoint[] Outliers() { int rowSize = Rows; int columnSize = Columns; GridPoint[] temp; int countOutliers = 0; for (int i = 1; i < rowSize - 1; i++) { for (int j = 1; j < columnSize - 1; j++) { double average = (elevations[i - 1, j - 1] + elevations[i, j - 1] + elevations[i + 1, j - 1] + elevations[i - 1, j] + elevations[i + 1, j] + elevations[i - 1, j + 1] + elevations[i, j + 1] + elevations[i + 1, j + 1]) / 8; if (Math.Abs(average - Elevation(i, j)) > 100) { countOutliers++; } } } temp = new GridPoint[countOutliers]; int position = 0; for (int i = 1; i < rowSize - 1; i++) { for (int j = 1; j < columnSize - 1; j++) { double average = (elevations[i - 1, j - 1] + elevations[i, j - 1] + elevations[i + 1, j - 1] + elevations[i - 1, j] + elevations[i + 1, j] + elevations[i - 1, j + 1] + elevations[i, j + 1] + elevations[i + 1, j + 1]) / 8; if (Math.Abs(average - elevations[i, j]) > 100) { temp[position] = new GridPoint(i, j); position++; } } } return temp; } public void SmoothOutliers(int row, int column) { double average = (elevations[row - 1, column - 1] + elevations[row, column - 1] + elevations[row + 1, column - 1] + elevations[row - 1, column] + elevations[row + 1, column] + elevations[row - 1, column + 1] + elevations[row, column + 1] + elevations[row + 1, column + 1]) / 8; elevations[row, column] = Math.Round(10 * average) / 10; } public double Area(double elevation) { int count = 0; double area = 0; foreach (double a in elevations) if (a <= elevation) count++; area = count * 0.1 * 0.1; return area; } public double Volume(double elevation) { double volume = 0; foreach (double s in elevations) if (s <= elevation) //add up the volumes of each square (0.1 km by 0.1 km) //Elevation is in m, convert to km by dividing it by 1000. volume += 0.1 * 0.1 * elevation / 1000; //in km cubed. return volume; } } class Program { static void Main() { string filename = "TahoeDEM.csv"; ElevationModel model = new ElevationModel(filename); GridPoint point = new GridPoint(model.Rows, model.Columns); GridPoint[] grid = model.Outliers(); foreach (GridPoint d in grid) { Console.WriteLine(d); } } }