开发者

Assignment "=" operator in VB.NET 1.1

I'm "cloning" objects in my code. For instance:

objClone = objOriginal

My question is:

  1. Do开发者_C百科es the assignment operator in VB.NET 1.1 do a member-by-member copy of the objOriginal to objClone or does objClone simply point as a reference to memory referenced by objOriginal?


It's a reference copy, if the type is a reference type (ie: classes). If it's a value type (Structure), it will do a member by member copy.


What happens with the code that you show depends on what type objOriginal is:

  • If it is a reference type, objClone will reference the same instance as objOriginal
  • If it is a value type, objClone will be a new instance, with the same content as objOriginal

Note though, if it is a value type having any members being reference types, those members will reference the same instances as the original object (this is known as a shallow copy).

Examples:

Public Class Test
    Public Number As Integer
End Class

Dim objOriginal As New Test()
objOriginal.Number = 42
Dim objClone As Test
objClone = objOriginal

In this case, objClone and objOriginal will both reference the same instance of Test.

Public Structure Test
    Public Number As Integer
End Class

Dim objOriginal As New Test()
objOriginal.Number = 42
Dim objClone As Test
objClone = objOriginal

In this case, objClone and objOriginal will be different instances of Test, each with their own Integer instance in the Number field.

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

In this case, objClone and objOriginal will be two different instances of k, but both will reference the same instance of SomeValue through their Value member.


I'm not sure about VB, but the C# version of assignment only does a shallow copy. (Edit: For reference types).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜