【发布时间】:2015-10-12 12:46:06
【问题描述】:
我想记录在类中建模的人员数据:
public class PersonModel : ViewModelBase
{
public string FirstName { get; set; }
public string LastName { get; set; }
...
}
Person 数据在运行时被修改并定期历史记录:
public MainViewModel() {
List<PersonModel> histItem = new List<PersonModel>();
PersonModel item = new PersonModel();
item.FirstName = "Vorname 1";
histItem.Add(item);
item.FirstName = "Vorname 2";
histItem.Add(item);
}
当我更改item(如倒数第二行)histItem 也更改了
histItem[0].FirstName = "Vorname 2";
当我第二次将item 添加到histItem 时,我有两个重复的列表实体。集合具有相同的行为。
我希望将“项目”存储为持久的、以后不可更改的快照。
【问题讨论】:
-
您必须实际制作其当前状态的快照。您将 references 添加到同一个对象两次,并同时修改该对象,这将覆盖以前的更改。正如您已经注意到的那样,这不起作用。所以你需要一个快照机制。
-
每次都要新建一个项目:
item = new PersonModel();
标签: c# list collections