将对象添加到此自定义类C#数组中

时间:2012-09-25 15:49:20

标签: c# arrays

这是一个菜鸟问题,我道歉。我已经尝试了一段时间来弄清楚如何向这个数组添加一个对象。我有一个Employee类,一个继承自Emp的Salary类,以及一个属于它的Hourly类。我创建了一个这样的数组,

        public Employee[] _Employees;
        ...    
        Employee[] _Employees = new Employee[]{ 
        new Hourly("1000", "Harry","Potter", "L.", "Privet Drive", "201-9090", "40.00", "12.00"),
        new Salary("2201", "A.", "A.", "Dumbledore", "Hogewarts", "803-1230", "1200"),
        new Hourly("3330", "R.","Weasley", "R.", "The Burrow", "892-2000", "40", "10.00"),
        new Salary("4040", "R.", "R.", "Hagrid", "Hogwarts", "910-8765", "1000")
                                                    };

现在我想将对象添加到我从文本文件中读取的数组中。我现在这样做;

                      if(rstring == "H")
                {
                    string fullName = data.ReadLine();
                    string empNum = data.ReadLine();
                    string address = data.ReadLine();
                    string phoneNum = data.ReadLine();
                    string hrWorked = data.ReadLine();
                    string hrRate = data.ReadLine();

                    string[] splitName = fullName.Split(new Char[] { ' ' });

                    string fName = splitName[0];
                    string mName = splitName[1];
                    string lName = splitName[2];

                     _MyForm._Employees = new Employee[] {new Hourly ( empNum, fName, mName, lName, address, phoneNum, hrWorked, hrRate ) };

它没有给我任何错误,但是当我查看_Employees类中存储的内容时,它只有上面的信息而没有其他内容。如果我需要更好地解释自己,请告诉我。如果我需要以另一种方式解决它,或者我需要做什么来将读取信息添加到此_Employees类,请告诉我。

3 个答案:

答案 0 :(得分:2)

您应该考虑使用List<Employee>而不是数组。这样您就可以任意数量的元素添加到列表中,而无需自行重新创建:

private List<Employee> employees = new List<Employee>();
public IList<Employee> Employees { get { return this.employees; } }

// ...
this.employees.Add(new Hourly("1000", "Harry","Potter", "L.", "Privet Drive", "201-9090", "40.00", "12.00"));
// .. Add all

然后,当您想要添加新的时,可以使用:

_MyForm.Employees.Add(new Hourly ( empNum, fName, mName, lName, address, phoneNum, hrWorked, hrRate));

答案 1 :(得分:2)

在这种情况下,最好使用List

IList<Employee> _Employees;

List的优点是可以使用Add方法将新对象添加到数组的末尾。

_MyForm._Employees.Add(new Hourly(...))

如果你想在集合中的其他点插入对象,那么还有Insert方法,该方法将索引与要添加的对象一起使用。

答案 2 :(得分:1)

使用其他人指出的List类和Add方法。你在这里做了什么:

_MyForm._Employees = new Employee[] 

在您的示例代码中,您已将重新分配您对MyForm._Employees的引用转换为Employee []类型的新对象,而不是添加到它。您之前包含其他有价值员工的参考文件很可能已被垃圾收集(如果范围内没有其他任何内容引用它)。

说实话,我会避开阵列。有关详细信息,请参阅this