List <T>对象的问题

Ram*_*esh 0 .net generics collections

List<Person> allPersons= ReadallPersons()

Person aPerson=allPersons[0];

aPerson.Name="test1";

allPersons.Add(aPerson)
Run Code Online (Sandbox Code Playgroud)

allPersons有一个单人对象,我将该人物对象分配给'aPerson'对象.只需将人名重命名为'test1'并再次将其添加到列表中.

现在,如果我们检查列表,则两个人的对象的名称都被指定为'test1'.

这有什么问题?

我们怎么能解决这个问题呢?

Ern*_*rno 7

您需要制作该对象的副本.您只是复制对同一对象的引用.所以两个条目都指向同一个人.

如果Person实现IClonable,您可以调用Clone(),修改克隆并将其添加到列表中.