使用while循环在List中存储类

时间:2015-03-04 18:15:31

标签: c# wpf list

我正在将数据读入人员课程,然后将人员课程存储到集合中。

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集合没有填充每个不同的人员类,因为它在循环中被读取?

1 个答案:

答案 0 :(得分:11)

您正在引用同一个对象。将您的代码更改为:

while (myReader.Read())
{
   personnel = new Personnel();
   personnel.PersonID = myReader.GetInt32(0);
   ...
}

其他信息:

创建类的对象时,为其分配对象的变量仅保留对该内存的引用。通过一个变量进行的更改会反映在其他变量中,因为它们都引用相同的数据。