0

I get this error System.NullReferenceException: 'Object reference not set to an instance of an object.' when trying to get user input from the main method and outputting it using the method toString that is located in my student class. Any help is appreciated.

code in main method:

using System;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Student[] myStudent = new Student[5];

            for(int i = 0; i < myStudent.Length; i++)
            {
                Console.WriteLine("Enter Student Number: ");
                myStudent[i].StudentNumber = int.Parse(Console.ReadLine());

                Console.WriteLine("Enter Forename: ");
                myStudent[i].Forename = Console.ReadLine();

                Console.WriteLine("Enter Surname: ");
                myStudent[i].Surname = Console.ReadLine();

                Console.WriteLine("Enter House: ");
                myStudent[i].House = Console.ReadLine();

                Console.WriteLine("Enter Year: ");
                myStudent[i].Year = int.Parse(Console.ReadLine());

                Console.WriteLine(myStudent[i].toString());
            }

            
            Console.ReadLine();

            
        }

    }
}

Code in my student class:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Test
{
    class Student
    {
        //Instance variables
        private int studentNumber;
        private int year;
        private string forename;
        private string surname;
        private string house;

        //Default constructor
        public Student()
        {
            studentNumber = 0;
            year = 0;
            forename = "";
            surname = "";
            house = "";
        }
        public Student(string _forename, string _surname, string _house, int _studentNumber, int _year)
        {
            forename = _forename;
            surname = _surname;
            house = _house;
            studentNumber = _studentNumber;
            year = _year;
        }

        public Student(string _forename, string _surname, string _house)
        {
            forename = _forename;
            surname = _surname;
            house = _house;
            studentNumber = 0;
            year = 0;
        }

        //Gets and sets
        public int StudentNumber
        {
            get { return studentNumber; }
            set { studentNumber = value; }
        }
        public int Year
        {
            get { return Year; }
            set { Year = value; }
        }
        public string Forename
        {
            get { return forename; }
            set { forename = value; }
        }
        public string Surname
        {
            get { return surname; }
            set { surname = value; }
        }
        public string House
        {
            get { return house; }
            set { house = value; }
        }
        public string toString()
        {
            return String.Format("Student Number: {0} \nForename: {1} \nSurname: {2} \nHouse: {3} \nYear: {4}", studentNumber, forename, surname, house, year);
        }
    }
}
corzan
  • 21
  • 3
  • you're creating an array for 5 students, but not initializting the elements. So you have an array of 5 references to Student, which are all `null`. Search for 'Array Elements' in the accepted answer to [this question](https://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) – jeroenh Oct 11 '20 at 13:21

0 Answers0