避免参考电话

时间:2014-12-22 12:52:37

标签: c# linq linq-to-objects

我有一些包含某些对象的搜索结果:

SearchResults = new ObservableCollection<ViewModel<Consignor>>();

我正在尝试将此列表中的第一个对象保存为新变量:

Consignor foundConsignor = consignors.First();

据我所知,这是一个参考电话。通过更改对象“foundConsignor”,我的列表中的第一个对象也会更改。我该如何避免这种行为?我可以调用Consignor的构造函数并将其传递给对象或值,但我也想避免这种情况,以便将复杂性保持在较低的水平。

1 个答案:

答案 0 :(得分:3)

Consignor课程上实施IClonable,然后您可以轻松执行consignors.First().Clone()之类的内容。

如果您的班级(Consignor)仅包含内在类型(intcharstring等),则MemberwiseClone()可能就足够了。但如果它包含非内在类型或引用类型,并且您想要执行成员的深层副本,则需要实现IClonable