【问题标题】:add elements to object array向对象数组添加元素
【发布时间】:2011-08-11 13:38:31
【问题描述】:

这一定很简单,只是在这里没有得到我的语法。假设我们有如下两个类:

class Student
{
    Subject[] subjects;
}

class Subject
{
    string Name;
    string referenceBook;
}

这是我的代码:

Student univStudent = new Student();

现在,我想在此处添加主题,但无法执行类似的操作

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

如何向这个对象数组添加项目?

【问题讨论】:

    标签: c# arrays collections


    【解决方案1】:

    你可以试试

    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{....});
    

    【讨论】:

    • 我使用了第二种方式,做了一个 .ToArray()
    • subjects.add 可能需要为subjects.Add
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      你不能。但是,您可以将数组替换为包含额外元素的新数组。

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

      试试:

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

      现在你可以说:

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

      【讨论】:

        【解决方案4】:

        如果可以,请使用List&lt;Subject&gt; 而不是Subject[]...这样您就可以使用Student.Subject.Add(new Subject())。如果这是不可能的,你将不得不调整你的数组大小......看看 Array.Resize() at http://msdn.microsoft.com/en-us/library/bb348051.aspx

        【讨论】:

          【解决方案5】:

          我知道这很旧,但是在寻找一种更简单的方法时遇到了它,这就是我的做法,只需创建一个相同对象的新列表并将其添加到您要使用的对象中,例如

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-09-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-09-16
            • 2021-09-01
            • 2012-06-18
            • 2014-08-03
            相关资源
            最近更新 更多