我有一些包含某些对象的搜索结果:
SearchResults = new ObservableCollection<ViewModel<Consignor>>();
我正在尝试将此列表中的第一个对象保存为新变量:
Consignor foundConsignor = consignors.First();
据我所知,这是一个参考电话。通过更改对象“foundConsignor”,我的列表中的第一个对象也会更改。我该如何避免这种行为?我可以调用Consignor的构造函数并将其传递给对象或值,但我也想避免这种情况,以便将复杂性保持在较低的水平。
答案 0 :(得分:3)
在Consignor
课程上实施IClonable,然后您可以轻松执行consignors.First().Clone()
之类的内容。
如果您的班级(Consignor
)仅包含内在类型(int
,char
,string
等),则MemberwiseClone()可能就足够了。但如果它包含非内在类型或引用类型,并且您想要执行成员的深层副本,则需要实现IClonable
。