[英]Add object to this array of custom Classes C#
抱歉,这是一个菜鸟问题。 我已经尝试了一段时间,以弄清楚如何向该数组添加对象。 我有一个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类中。
代替使用数组,您应该考虑使用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));
在这种情况下,最好使用List
:
IList<Employee> _Employees;
List的优点是具有Add
方法,该方法可用于将新对象添加到数组的末尾。
_MyForm._Employees.Add(new Hourly(...))
如果要在集合中的其他位置插入对象,则还有一个Insert
方法,该方法将索引与要添加的对象一起使用。
使用其他人指出的List类和Add方法。 您在这里做了什么:
_MyForm._Employees = new Employee[]
在示例代码中,您已将MyForm._Employees的引用重新分配给类型为Employee []的新对象,而不添加到该对象。 您以前包含其他有价值的员工的参考将很可能已被垃圾回收(如果范围内没有其他参考)。
老实说,我会避免使用数组。 请参阅此以获取更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.