Добавлять элементы в массив объектов
Это должно быть действительно просто, но просто не получить мой синтаксис здесь. скажем, у нас есть классы, как два ниже:
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 ;