Перегрузка конструктора - PullRequest
0 голосов
/ 23 января 2012

Кто-нибудь может подсказать, что здесь не так?

public class Student 
{
    public List<Class> Classes { get; set; }

    public Student(List<Class> classes)
    {
       this.Classes = classes;
    }
    public Student(Class class) 
    {
        //This does not work
        //Error: Object reference not set to an instance of an object.
        this.Classes.Add(class);
    }
}

Называя его следующим образом

var classes = new List<Classes>();
classes.Add(new Class("English", "Elective"));
classes.Add(new Class("Math", "Core"));
..more classes to add
Student student = new Student(classes);

Когда у меня есть такой вызов (нужно добавить только один класс)

Student student = new Student(new Class("Masters","Accounts"));

Я получаю ошибку. Спасибо.

Ответы [ 4 ]

6 голосов
/ 23 января 2012

Ваша перегрузка классом должна инициализировать классы перед добавлением класса.Попробуйте это:

public class Student 
{
    public List<Class> Classes { get; set; }

    public Student(List<Class> classes)
    {
       this.Classes = classes;
    }
    public Student(Class class) 
    {
        this.Classes = new List<Class>();
        this.Classes.Add(class);
    }
}
3 голосов
/ 23 января 2012

Во втором конструкторе вы никогда не инициализировали Classes

2 голосов
/ 23 января 2012

this.Class не инициализируется:

public class Student 
{
    public List<Class> Classes { get; set; }

    public Student(List<Class> classes)
    {
       this.Classes = classes;
    }
    public Student(Class class) 
    {
        this.Classes = new List<Class>();
        this.Classes.Add(class);
    }
}
0 голосов
/ 23 января 2012

Вам нужно инициализировать Classes, прежде чем пытаться добавить к нему объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...