C# 避免通过引用调用

C# 避免通过引用调用,c#,linq,linq-to-objects,C#,Linq,Linq To Objects,我有一些对象的搜索结果列表: SearchResults = new ObservableCollection<ViewModel<Consignor>>(); 据我所知,这是一个参考电话。通过更改对象“FoundCommissor”,我列表中的第一个对象也会更改。我怎样才能避免这种行为?我可以调用委托人的构造函数并将对象或值传递给它,但我也希望避免这种情况,以保持较低的复杂性。在委托人类上实现,然后您可以轻松地执行类似委托人。First().Clone()的操作 如果

我有一些对象的搜索结果列表:

SearchResults = new ObservableCollection<ViewModel<Consignor>>();
据我所知,这是一个参考电话。通过更改对象“FoundCommissor”,我列表中的第一个对象也会更改。我怎样才能避免这种行为?我可以调用委托人的构造函数并将对象或值传递给它,但我也希望避免这种情况,以保持较低的复杂性。

委托人
类上实现,然后您可以轻松地执行类似
委托人。First().Clone()
的操作

如果您的类(
委托人
)只包含内部类型(
int
char
string
等),可能就足够了。但是,如果它包含非内在类型或引用类型,并且您希望执行成员的深度复制,则需要在
委托人
类上实现
IClonable

实现,然后您可以轻松地执行类似于
委托人.First().Clone()
的操作

如果您的类(
委托人
)只包含内部类型(
int
char
string
等),可能就足够了。但是,如果它包含非内在类型或引用类型,并且您希望执行成员的深度复制,则需要在
委托人
类上实现
IClonable

实现,然后您可以轻松地执行类似于
委托人.First().Clone()
的操作

如果您的类(
委托人
)只包含内部类型(
int
char
string
等),可能就足够了。但是,如果它包含非内在类型或引用类型,并且您希望执行成员的深度复制,则需要在
委托人
类上实现
IClonable

实现,然后您可以轻松地执行类似于
委托人.First().Clone()
的操作


如果您的类(
委托人
)只包含内部类型(
int
char
string
等),可能就足够了。但如果它包含非内在类型或引用类型,并且您希望执行成员的深度复制,您需要实现
IClonable

搜索对象的
深度副本
,例如通过序列化/反序列化循环。搜索对象的
深度副本
,例如通过序列化/反序列化循环。搜索对象的
深度副本
循环。搜索对象的
深度复制
——例如,通过序列化/反序列化循环。
Consignor foundConsignor = consignors.First();