Добавлять элементы в массив объектов

Это должно быть действительно просто, но просто не получить мой синтаксис здесь. скажем, у нас есть классы, как два ниже:

class Student
{
    Subject[] subjects;
}

class Subject
{
    string Name;
    string referenceBook;
}

Вот мой код:

Student univStudent = new Student();

Теперь я хочу добавить предметы здесь, но не могу сделать что-то вроде

univStudent.subjects.add(new Subject{....});

Как добавить элементы в этот массив объектов?

Ответы

Ответ 1

Вы можете попробовать

Subject[] subjects = new Subject[2];
subjects[0] = new Subject{....};
subjects[1] = new Subject{....};

альтернативно вы можете использовать List

List<Subject> subjects = new List<Subject>();
subjects.add(new Subject{....});
subjects.add(new Subject{....});

Ответ 2

Вы можете использовать класс System.Array для добавления нового элемента:

Array.Resize(ref objArray, objArray.Length + 1);
objArray[objArray.Length - 1] = new Someobject();

Ответ 3

Вы не можете. Однако вы можете заменить массив новым, содержащим дополнительный элемент.

Но это проще и дает лучшую производительность для использования List<T> (использует интерфейс IList) для этого. List<T> не изменяет размер массива каждый раз, когда вы добавляете элемент - вместо этого он удваивает его, когда это необходимо.

Try:

class Student
{
    IList<Subject> subjects = new List<Subject>();
}

class Subject
{
    string Name;
    string referenceBook;
}

Теперь вы можете сказать:

someStudent.subjects.Add(new Subject());

Ответ 4

Если вы можете, используйте List<Subject> вместо Subject[]... это позволит вам сделать Student.Subject.Add(new Subject()). Если это невозможно, вам придется изменить размер массива... посмотрите на Array.Resize() в http://msdn.microsoft.com/en-us/library/bb348051.aspx

Ответ 5

Я знаю, что это старый, но натолкнулся на него, ища более простой способ, и так я это делаю, просто создайте новый список одного и того же объекта и добавьте его к тому, который вы хотите использовать, например.

Subject[] subjectsList = {new Subject1{....}, new Subject2{....}, new Subject3{....}} 
univStudent.subjects = subjectsList ;