我有一个Person类型列表。当我创建人员列表时,它会将当前列表元素的信息替换为当前列表元素的信息。我已经读过这是静态类变量的问题,但我的属性都不是静态的。
class Person{
private string _name;
private string _address;
public string Name{
get{ return _name;}
set { _name = value;}
public string Address{
get{ return _address;}
set { _address = value;}
}
}
我从文件中读取人员并将其存储在字符串数组中。我介入以确保阵列是正确的。它是。
这是奇怪的地方:
string[] personArray;
Person tempPerson = new Person();
List<Person> people = new List<Person>();
foreach (string line in lines)//lines are the people from file, it is correct
{
personArray = line.Split(',');
if (personArray.Length == 2)
{
tempPerson.Name = personArray[0];
tempPerson.Address = personArray[1];
people.Add(tempPerson);
}
}
我单步执行代码并正确添加第一个人,添加第二个人 调查人,他们都有第二人的信息。在add语句之后,一切都看起来正确。
答案 0 :(得分:5)
您需要移动
的初始化Person tempPerson = new Person();
进入循环
string[] personArray;
List<Person> people = new List<Person>();
foreach (string line in lines)//lines are the people from file, it is correct
{
personArray = line.Split(',');
if (personArray.Length == 2)
{
Person tempPerson = new Person();
tempPerson.Name = personArray[0];
tempPerson.Address = personArray[1];
people.Add(tempPerson);
}
}
否则您正在更改同一对象的属性。