这是一个菜鸟问题,我道歉。我已经尝试了一段时间来弄清楚如何向这个数组添加一个对象。我有一个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类,请告诉我。
答案 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。