我不知道什麼在調用我的Equals方法,因爲當發生斷點時沒有調用堆棧(Equals本身和[External Code]除外)。爲什麼Equals在方法解決後調用?
我有一個UserComplete類,它具有方法GetAll和Equals以及其他一些接受對象數組的構造函數。 UserComplete從用戶繼承。用戶類包括方法GetRows和Equals。
的Equals什麼特別的:
Public Overrides Function Equals(obj As Object) As Boolean
If Not MyBase.Equals(obj) Then
Return False
End If
Dim u As UserComplete = CType(obj, UserComplete)
Return Me.RoleIds.Equals(u.RoleIds)
End Function
而且GETALL只是從數據庫或高速緩存中的對象()()轉換爲UserComplete
Public Function GetAll() As IList(Of UserComplete)
Dim rows As Object()() = GetRows()
If IsNothing(rows) Then
Return Nothing
End If
Dim completeUsers As List(Of UserComplete) = (From u In rows Select New UserComplete(DirectCast(u, Object()))).ToList()
If IsNothing(completeUsers) OrElse Not completeUsers.Any() Then
Return Nothing
End If
Return completeUsers
End Function
列表我叫GETALL從服務控制器並實際得到迴應,沒問題。然後在完成之後,Equals中的斷點被擊中,而obj是一個具有一個值的List(Of Integers)。
如果您希望這種行爲,爲什麼? 如果沒有,你能解釋它爲什麼會出現以及如何解決它?