.net 复制数组元素

.net 复制数组元素,.net,wpf,vb.net,arrays,.net,Wpf,Vb.net,Arrays,我上过强类型的课 Public Class RowData Sub New(ByVal rRecord As String, ByVal rAccount As String, _ ByVal soExperian As Boolean, ByVal soEquifax As Boolean, ByVal soTransunion As Boolean, _ ByVal snExperian As Boolean, ByVal snEqu

我上过强类型的课

Public Class RowData

    Sub New(ByVal rRecord As String, ByVal rAccount As String, _
            ByVal soExperian As Boolean, ByVal soEquifax As Boolean, ByVal soTransunion As Boolean, _
            ByVal snExperian As Boolean, ByVal snEquifax As Boolean, ByVal snTransunion As Boolean)

        Me.Record = rRecord
        Me.Account = rAccount
        Me.oExperian = soExperian
        Me.oEquifax = soEquifax
        Me.oTransunion = soTransunion
        Me.nExperian = snExperian
        Me.nEquifax = snEquifax
        Me.nTransunion = snTransunion

    End Sub

.........

End Class
然后我使用下面的代码声明2个元素数组

Dim Tradelines(1) As List(Of RowData)

Tradelines(0) = New List (Of RowData)
Tradelines(0).Add(New RowData("222", "222", False, False, False, False, False, False))
贸易线(0)已填充,没有问题,但当我使用以下代码将元素-0复制到元素-1时,它们似乎已绑定,因此如果我更改任一元素中的任何值,另一个元素将自动更新。我不想那样,有什么线索吗

Tradelines(1) = Tradelines(0)

类型为
RowData
的集合中的项是通过引用传递的,它们不是值类型。这就是为什么更改一个将在添加项的所有集合中进行更改,因为它是同一个对象

如果不需要相同的引用,则需要创建新对象并将其添加到新集合中。一种很好的方法是在
RowData
类中实现
IClonable

Tradelines(1) = Tradelines(0).Clone()

类型为
RowData
的集合中的项是通过引用传递的,它们不是值类型。这就是为什么更改一个将在添加项的所有集合中进行更改,因为它是同一个对象

如果不需要相同的引用,则需要创建新对象并将其添加到新集合中。一种很好的方法是在
RowData
类中实现
IClonable

Tradelines(1) = Tradelines(0).Clone()
试试这个

Tradelines(0).ForEach(AddressOf Tradelines(1).Add)
试试这个

Tradelines(0).ForEach(AddressOf Tradelines(1).Add)

它们没有边界。它们是相同的元素,所以这篇文章也谈到了这一点:它们没有边界。它们是相同的元素。这篇文章也介绍了这一点:
Clone()
函数只适用于子项,这意味着我可以做,
Tradelines(1)(0)=Tradelines(0)(0)。Clone
只复制element-0中的第一个子项,但我做了一些递归操作,现在一切都很好,谢谢!然后,
Clone()
函数仅可用于子项,这意味着我可以执行,
Tradelines(1)(0)=Tradelines(0)(0)。Clone
仅复制元素-0中的第一个子项,但我做了一些递归操作,现在一切都很好,谢谢!