“转让”=&引用;VB.NET 1.1中的运算符
我正在代码中“克隆”对象。例如:“转让”=&引用;VB.NET 1.1中的运算符,vb.net,.net-1.1,Vb.net,.net 1.1,我正在代码中“克隆”对象。例如: objClone = objOriginal 我的问题是: VB.NET 1.1中的赋值运算符是将objOriginal的成员逐个复制到objClone,还是objClone只是指向objOriginal引用的内存 我对VB不太清楚,但C版本的作业只做了一个肤浅的复制。 (编辑:用于参考类型)。我不确定VB,但C版本的作业只做了一个浅显的复制。 (编辑:用于引用类型)。如果类型是引用类型(即:类),则为引用副本。如果它是一个值类型(结构),它将逐个成员进行复制
objClone = objOriginal
我的问题是:
我对VB不太清楚,但C版本的作业只做了一个肤浅的复制。
(编辑:用于参考类型)。我不确定VB,但C版本的作业只做了一个浅显的复制。
(编辑:用于引用类型)。如果类型是引用类型(即:类),则为引用副本。如果它是一个值类型(结构),它将逐个成员进行复制。如果类型是引用类型(即:类),则它是一个引用副本。如果是值类型(结构),它将逐个成员进行复制。您显示的代码会发生什么情况取决于原始的
类型:
- 如果是引用类型,
objClone
将引用与objOriginal
- 如果是值类型,
objClone
将是一个新实例,其内容与objOriginal
但是请注意,如果它是一个值类型,并且有任何成员是引用类型,则这些成员将引用与原始对象相同的实例(这称为浅副本)
示例:
Public Class Test
Public Number As Integer
End Class
Dim objOriginal As New Test()
objOriginal.Number = 42
Dim objClone As Test
objClone = objOriginal
在这种情况下,objClone
和objOriginal
都将引用相同的Test
实例
Public Structure Test
Public Number As Integer
End Class
Dim objOriginal As New Test()
objOriginal.Number = 42
Dim objClone As Test
objClone = objOriginal
在这种情况下,objClone
和objOriginal
将是Test
的不同实例,每个实例在Number
字段中都有自己的Integer
实例
Public Class SomeValue
Public Number As Integer
End Class
Public Structure Test
Public Value As SomeValue
End Class
Dim objOriginal As New Test()
objOriginal.Value = New SomeValue()
objOriginal.Value.Number = 42
Dim objClone As Test
objClone = objOriginal
在这种情况下,objClone
和objOriginal
将是k的两个不同实例,但它们都将通过其值成员引用同一个SomeValue
。显示的代码的情况取决于objOriginal
的类型:
- 如果是引用类型,
objClone
将引用与objOriginal
- 如果是值类型,
objClone
将是一个新实例,其内容与objOriginal
但是请注意,如果它是一个值类型,并且有任何成员是引用类型,则这些成员将引用与原始对象相同的实例(这称为浅副本)
示例:
Public Class Test
Public Number As Integer
End Class
Dim objOriginal As New Test()
objOriginal.Number = 42
Dim objClone As Test
objClone = objOriginal
在这种情况下,objClone
和objOriginal
都将引用相同的Test
实例
Public Structure Test
Public Number As Integer
End Class
Dim objOriginal As New Test()
objOriginal.Number = 42
Dim objClone As Test
objClone = objOriginal
在这种情况下,objClone
和objOriginal
将是Test
的不同实例,每个实例在Number
字段中都有自己的Integer
实例
Public Class SomeValue
Public Number As Integer
End Class
Public Structure Test
Public Value As SomeValue
End Class
Dim objOriginal As New Test()
objOriginal.Value = New SomeValue()
objOriginal.Value.Number = 42
Dim objClone As Test
objClone = objOriginal
在这种情况下,objClone
和objOriginal
将是k的两个不同实例,但两者都将通过其值成员引用相同的SomeValue实例。FYI-这在更新版本的VB.NET以及C#和其他.NET语言中是相同的。FYI-这在更新版本的VB.NET以及C#和其他.NET语言中是相同的。哇!这是一个很难调试的问题。哇!这是一个需要调试的混乱问题。