1

Подскжите почему выкидывает ошибку System.NullReferenceException: 'Object reference not set to an instance of an object.' PupilsList was null. Как исправить. Хочу просто методом AddPupils добавлять в лист обьекты(pupils).

 class Pupils
{
    public string name;
    private int age;
public Pupils()
{

}
public Pupils(string name, int age)
{
    this.name = name;
    this.age = age; 
}

}

class MyClass {

private List<Pupils> PupilsList;

public void AddPupil(Pupils pupil)
{

    PupilsList.Add(pupil);

}

public void PrintClass(List<Pupils>PupilsList)
{
    foreach(Pupils pupil in PupilsList)
    {
        Console.WriteLine(pupil);
    }
}      

}

class Program { static void Main(string[] args) { Pupils pupil = new Pupils("Vlad", 24);

    MyClass myclass = new MyClass();

    myclass.AddPupil(pupil);

1 Answers1

5

Первая ошибка здесь private List<Pupils> PupilsList; ты объявил список но его не инициализировал, то есть у тебя просто в памяти где-то лежит этот список, но ты с ним ничего сделать не сможешь. Заменяем эту строку на эту private List<Pupils> PupilsList = new List<Pupils>()

Вторая ошибка в методе public void PrintClass(List<Pupils>PupilsList) ты параметром передаешь список и далее в цикле по нему итерируешься, но суть в том что это не тот список который ты ранее объявил. Это вообще какой-то другой список. То есть в методе public void AddPupil(Pupils pupil) ты все правильно сделал, ты обращаешься к списку, который ты объявил в этом классе. Меняем эту строку на эту public void PrintClass()

Еще я добавил метод ToString() в класс Pupils, чтобы вывод человеческий был. И еще посмотри пару роликов про чистый код, так никто не называет классы. И отмазка по типу это тестовая прога не прокатит, прививай привычку с самого начала.

class Pupil
{
    private string name;
    private int age;
public Pupil()
{

}
public Pupil(string name, int age)
{
    this.name = name;
    this.age = age;
}

public override string ToString()
{
    return name + &quot; &quot; + age;
}

}

class Pupils {

private List&lt;Pupil&gt; PupilsList = new List&lt;Pupil&gt;();

public void AddPupil(Pupil pupil)
{
    PupilsList.Add(pupil);
}

public void Show()
{
    foreach (Pupil pupil in PupilsList)
    {
        Console.WriteLine(pupil.ToString());
    }
}

}

class Program { static void Main(string[] args) { Pupil pupil = new Pupil("Vlad", 24); Pupils pupils = new Pupils(); pupils.AddPupil(pupil); pupils.Show(); } }