创建该对象的“克隆”,而不是指向它

比方说,我有一个叫做名单

myFirstList

然后,我要创建一个列表的副本,所以我可以做我自己的一些调整。 所以我这样做:

mySecondList = myFirstList mySecondList.doTweaks

但我注意到,调整也影响myFirstList对象! 我只希望调整影响到第二个...

事后我会想彻底删除mySecondList ,所以我mySecondList = Nothing ,我很好的,对不对?

--------------解决方案-------------

但我注意到,调整也影响myFirstList对象! 我只希望调整影响到第二个...

当然有。 这两个变量都指向内存中的同一个对象。 你做一个东西,恰巧对方。

你将需要做的无论是深克隆,或浅的,根据您的要求。 这篇文章应该给你一个更好的主意,你需要做什么

既然你没有透露您存储n您的列表项的类型,我认为它是一个的实施IClonable东西(否则,如果你能,实现IClonable,或想出一个办法来克隆列表中的个别项目)。

尝试这样的事情

mySeconmySecondList = myFirstList.[Select](Function(i) i.Clone()).ToList()

扩大亚当Rackies的回答,我能够实现使用VB.NET下面的代码。

我的目标是复制主要作为数据传输对象(即数据库中的数据)对象的列表,第一 dtoNamedClass定义的类,并加入ShallowCopy方法。 创建了一个名为dtoNamedClassCloneVar新的变量和LINQ查询选择使用复制的对象变量dtoNamedClassVar。

我能够更改dtoNamedClassCloneVar不影响dtoNamedClassVar。

Public Class dtoNamedClass

... Custom dto Property Definitions

Public Function ShallowCopy() As dtoNamedClass
Return DirectCast(Me.MemberwiseClone(), dtoNamedClass)
End Function

End Class

Dim dtoNamedClassVar As List(Of dtoNamedClass) = {get your database data}

Dim dtoNamedClassCloneVar =
(From d In Me.dtoNamedClass
Where {add clause if necessary}
Select d.ShallowCopy()).ToList

这对我的作品:

mySecondList = myFirstList.ToList

分类:vb.net 时间:2015-03-15 人气:5
本文关键词: Visual Studio中,vb.net
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.086 (s). 10 q(s)