gpt4 book ai didi

c# - 列表替换所有以前的元素

转载 作者:太空宇宙 更新时间:2023-11-03 20:15:42 24 4
gpt4 key购买 nike

我有一个 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);
}
}

我单步执行代码,正确添加了第一个人,添加了第二个人调查人,他们都有第二个人的信息。在添加语句之前,一切看起来都是正确的。

最佳答案

需要移动初始化

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);
}
}

否则您将更改同一对象的属性。

关于c# - 列表替换所有以前的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16875570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com