Что происходит с кодом, который вы показываете зависит от того, какой тип objOriginal
является:
- Если это ссылочный тип,
objClone
будет ссылаться на один и тот же экземпляр, как objOriginal
- Если это тип значения,
objClone
будет новый экземпляр, с тем же содержанием, как objOriginal
Примечание, хотя, если это тип значения, имеющие какие-либо членов, являющихся ссылочными типами, эти члены Виль l ссылаются на те же экземпляры, что и исходный объект (это называется мелкой копии).
Примеры:
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
, каждый со своим собственным Integer
например, в Number
поле.
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
будут две разные случаи к, но оба будут ссылаться на один и тот же экземпляр SomeValue
через их члена Value.
Вот что я думал. – Achilles
FYI - это то же самое в новых версиях VB.NET, а также на C# и других языках .NET. –