比較兩個執行個體是否為同一對象的執行個體化

來源:互聯網
上載者:User

      如何比較兩個執行個體是否為同一執行個體?如student1和student2兩個對象如何確定他們是否是代表同一執行個體對象?首先如果兩個對象都是對同一類的執行個體化對象的引用,那麼這兩個對象必然是同一對象的執行個體。如果比較的對象分別為兩個執行個體化對象,判斷這兩個執行個體相等的要求是兩個執行個體對象的屬性對應相等。

對象引用         

        所謂對象引用是說對象沒有進過執行個體化跟初始化而是直接引用另一個執行個體化並初始化的對象。如

Public Class Student    Private _age As Long    Private _name As String    Private _sex As String    Public Sub New()    End Sub    Public Property sex        Set(ByVal value)            Me._sex = value        End Set        Get            Return Me._sex        End Get    End Property    Public Property age        Set(ByVal value)            Me._age = value        End Set        Get            Return Me._age        End Get    End Property    Public Property name        Set(ByVal value)            _name = value        End Set        Get            Return _name        End Get    End Property    End Class

         

Module Module1    Sub Main()        Dim student1 As New Student        student1.age = 18        student1.name = "wangming"        student1.sex = "男"        Dim student2 As Student        student2 = student1    End SubEnd Module

        很明顯student1是對Student的執行個體化,而student2並沒有執行個體化只是對student1的引用所以student1與student2比然相等(student1與student2的姓名、年齡、性別都相同)

兩個對象所有屬性都相同

       如果相比較的兩個對象分別來自於類的執行個體化並經過了初始化,判斷他們是否為同一執行個體就要看他們的屬性是否都相同。如:

Module Module1    Sub Main()        Dim student1 As New Student        student1.age = 18        student1.name = "wangming"        student1.sex = "男"        Dim student2 As New Student        student2.age = 18        student2.name = "wangming"        student2.sex = "男"    End SubEnd Module

       很明顯student1與student2都是對Student的執行個體化,所以為兩個對象。由於student1與student2的姓名、年齡、性別都相同,所以可以判斷student1與student2為同一個學生。

        判斷兩個執行個體是否為同一執行個體方法的實現

        所有的類都繼承了一個Equals方法,Equals方法用來與同類對象之間的比較。所以要實現兩個對象間的比較就要對該方法進行override(重寫)。即要實現兩個student間的比較就要在Student類中重寫該方法

    

Public Class Student    Private _age As Long    Private _name As String    Private _sex As String    Public Sub New()    End Sub    Public Property sex        Set(ByVal value)            Me._sex = value        End Set        Get            Return Me._sex        End Get    End Property    Public Property age        Set(ByVal value)            Me._age = value        End Set        Get            Return Me._age        End Get    End Property    Public Property name        Set(ByVal value)            _name = value        End Set        Get            Return _name        End Get    End Property    Public Overrides Function Equals(ByVal obj As Object) As Boolean        Dim stu As Student = obj        Dim flag As Boolean = False        If IsDBNull(stu) Then            flag = False        ElseIf Me Is stu Then ‘判斷是否為對象的引用            flag = True        ElseIf Me._sex = stu.sex And Me._age = stu.age And Me._name = stu.name Then ’判斷兩個對象的屬性是否完全相同            flag = True        Else            flag = False        End If        Return flag    End Function    End Class

 

Module Module1    Sub Main()        'Dim student1 As New Student        'student1.age = 18        'student1.name = "wangming"        'student1.sex = "男"        'Dim student2 As Student        'student2 = student1        Dim student1 As New Student        student1.age = 18        student1.name = "wangming"        student1.sex = "男"        Dim student2 As New Student        student2.age = 18        student2.name = "wangming"        student2.sex = "男"        Console.WriteLine(student1.Equals(student2))'輸出兩個對象的比較結果,值為Boolean    End SubEnd Module

判定兩執行個體是否相等可應用與U層接收的資料資訊與資料庫中的資訊比較,如輸入一個學生資訊當驗證此學生資訊是否存在於資料庫中時可以在Student類中重寫Equals方法。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.