我正在将数据读入人员课程,然后将人员课程存储到集合中。
ObservableCollection<Personnel> Personnels = new ObservableCollection<Personnel>();
Personnel personnel = new Personnel();
...代码省略......
while (myReader.Read())
{
personnel.PersonID = myReader.GetInt32(0);
personnel.PersonNameID = myReader.GetInt32(1);
personnel.PersonWage = myReader.GetInt32(2);
personnel.PersonWages = String.Format("{0:N0}", personnel.PersonWage);
// more personnel. items...
Personnels.Add(personnel); }
我的问题是,人员收集完全填写了只读入最后一份人事记录的人事记录。在人员收集中说出100个人员班级记录,但所有人员班级记录相同,最后一个人员班级读取的数据。 / p>
为什么Personnels集合没有填充每个不同的人员类,因为它在循环中被读取?
答案 0 :(得分:11)
您正在引用同一个对象。将您的代码更改为:
while (myReader.Read())
{
personnel = new Personnel();
personnel.PersonID = myReader.GetInt32(0);
...
}
其他信息:
创建类的对象时,为其分配对象的变量仅保留对该内存的引用。通过一个变量进行的更改会反映在其他变量中,因为它们都引用相同的数据。