"是"运算符返回不同于预期的值

时间:2015-04-06 04:33:40

标签: vb.net operator-keyword

MSDN说: “Is运算符确定两个对象引用是否引用同一对象。但是,它不执行值比较。如果object1和object2都引用完全相同的对象实例,则结果为True;如果不引用,则结果为False。 “

那么为什么这段代码返回True或False取决于更改了secondPerson.FirstName属性?

 Public Class Person
    Implements Global.System.ICloneable
    Property FirstName As String
    Property LastName As String
    Public Function Clone() As Object Implements Global.System.ICloneable.Clone
        Return Me.MemberwiseClone
    End Function
End Class

Module Module1

    Sub Main()
        Dim firstPerson As New Person
        firstPerson.FirstName = "Alessandro"
        firstPerson.LastName = "Del Sole"
        Dim secondPerson As Person = CType(firstPerson.Clone, Person)
        Console.WriteLine(firstPerson.FirstName Is secondPerson.FirstName)'return True
        secondPerson.FirstName = "SomeValue"
        Console.WriteLine(firstPerson.FirstName Is secondPerson.FirstName)'return False
        Console.ReadLine()
    End Sub
End Module

0 个答案:

没有答案