“转让”=&引用;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.NET 1.1中的赋值运算符是将objOriginal的成员逐个复制到objClone,还是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语言中是相同的。哇!这是一个很难调试的问题。哇!这是一个需要调试的混乱问题。