web-dev-qa-db-ja.com

オブジェクト配列に要素を追加します

これは本当にシンプルでなければなりませんが、ここで構文を取得しないでください。次の2つのクラスがあるとします。

class Student
{
    Subject[] subjects;
}

class Subject
{
    string Name;
    string referenceBook;
}

ここに私のコードがあります:

Student univStudent = new Student();

さて、ここに件名を追加したいのですが、次のようなことはできません

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

このオブジェクト配列にアイテムを追加するにはどうすればよいですか?

19
user583126

あなたが試すことができます

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

あるいは、リストを使用することができます

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

クラスSystem.Arrayを使用して、新しい要素を追加できます。

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

できません。ただし、配列を追加の要素を含む新しい配列に置き換えることができます。

ただし、これにList<T>を使用する(インターフェイスIListを使用する)方が簡単で、パフォーマンスが向上します。 List<T>は、アイテムを追加するたびに配列のサイズを変更しません。代わりに、必要に応じてサイズを2倍にします。

試してください:

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

class Subject
{
    string Name;
    string referenceBook;
}

今、あなたは言うことができます:

someStudent.subjects.Add(new Subject());
6
Lasse Espeholt

可能であれば、_List<Subject>_の代わりに_Subject[]_を使用してください。これにより、Student.Subject.Add(new Subject())を実行できます。それが不可能な場合は、アレイのサイズを変更する必要があります... http://msdn.Microsoft.com/en-us/library/bb348051.aspx のArray.Resize() =

2
NateTheGreat

私はこれが古いことを知っていますが、より簡単な方法を探してそれに遭遇しました、これは私がそれを行う方法です、同じオブジェクトの新しいリストを作成して、使用したいものに追加するだけです.

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