从vb.net中的对象列表中删除引用

时间:2016-03-24 14:21:55

标签: vb.net list reference

我想将一个List(Of Object)的内容复制到另一个List并修改单个值。有没有办法删除引用?

在代码示例中,我得到了输出&test; test2 test2'当我期待' test1 test2'。

Module Module1

Sub Main()
    Dim ListOfSample As New List(Of sample)
    Dim var1 As New sample
    var1.Name = "test"
    ListOfSample.Add(var1)
    ListOfSample.Add(var1)

    Dim NewListOfSample As New List(Of sample)

    NewListOfSample.AddRange(ListOfSample)
    NewListOfSample(1).Name = "test2"

    Console.Write(NewListOfSample(0).Name & " " & NewListOfSample(1).Name)
End Sub

End Module

Public Class sample
    Public Name As String
End Class

2 个答案:

答案 0 :(得分:0)

<ion-item class="item-accordion" ng-repeat="title in groupR.titles" ng-repeat = "url in groupR.urls" ng-show="isGroupShown(groupR)" ui-sref="menu.{{url}}" menu-close=""> {{title}} </ion-item> 行中,您要添加对新列表的引用。因此,无论您在新列表中更改了什么,都会更新原始列表中的引用(它们都指向相同的对象)。您需要将新的Sample实例添加到第二个列表中,以使其包含独立项。

答案 1 :(得分:0)

由于您的列表是对象列表,因此当您执行添加范围时,您不会添加&#34;副本&#34;而是将指针(引用)添加到原始列表中的相同对象

您需要克隆第一个列表中的所有对象,然后将这些克隆添加到第二个列表中。在克隆方面,.NET有几种不同的方法。这是一篇关于获取对象的深层副本的帖子,这些文章可以很好地解释您的选项:Deep Copy of an Object

您可以在&#34;示例&#34;上创建克隆方法。 object返回一个新初始化的自身副本,或者你可以使用我链接到的帖子中提到的一些序列化方法。