繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM