将元素添加到对象数组

use*_*126 20 c# arrays collections

这一定非常简单但只是没有让我的语法在这里.假设我们在下面有两个类:

class Student
{
    Subject[] subjects;
}

class Subject
{
    string Name;
    string referenceBook;
}
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

Student univStudent = new Student();
Run Code Online (Sandbox Code Playgroud)

现在,我想在这里添加主题但不能做类似的事情

univStudent.subjects.add(new Subject{....});
Run Code Online (Sandbox Code Playgroud)

如何向此对象数组添加项?

Bal*_*a R 43

你可以试试

Subject[] subjects = new Subject[2];
subjects[0] = new Subject{....};
subjects[1] = new Subject{....};
Run Code Online (Sandbox Code Playgroud)

或者你可以使用List

List<Subject> subjects = new List<Subject>();
subjects.add(new Subject{....});
subjects.add(new Subject{....});
Run Code Online (Sandbox Code Playgroud)

  • 我用第二种方式做了一个.ToArray <Subject>() (3认同)

Geo*_*aph 11

您可以使用System.Array类添加新元素:

Array.Resize(ref objArray, objArray.Length + 1);
objArray[objArray.Length - 1] = new Someobject();
Run Code Online (Sandbox Code Playgroud)


Las*_*olt 7

你不能.但是,您可以使用包含额外元素的新数组替换该数组.

但是使用List<T>(使用接口IList)为此更容易并且提供更好的性能.List<T>每次添加项目时都不会调整数组的大小 - 而是在需要时将其加倍.

尝试:

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

class Subject
{
    string Name;
    string referenceBook;
}
Run Code Online (Sandbox Code Playgroud)

现在你可以说:

someStudent.subjects.Add(new Subject());
Run Code Online (Sandbox Code Playgroud)


Nat*_*eat 5

如果可以的话,使用 aList<Subject>代替Subject[]... 这会让你这样做Student.Subject.Add(new Subject())。如果这是不可能的,您将不得不调整数组的大小...查看 Array.Resize() http://msdn.microsoft.com/en-us/library/bb348051.aspx