Vb.net 为什么在解析方法后调用Equals?
我不知道调用Equals方法的是什么,因为当遇到断点时,没有调用堆栈(Equals本身和[External Code]除外) 我有一个类UserComplete,它有GetAll和Equals方法,还有一些方法包括一个接受对象数组的构造函数。UserComplete继承自用户。用户类包括GetRows和Equals方法 平等没有什么特别的:Vb.net 为什么在解析方法后调用Equals?,vb.net,overriding,equals-operator,Vb.net,Overriding,Equals Operator,我不知道调用Equals方法的是什么,因为当遇到断点时,没有调用堆栈(Equals本身和[External Code]除外) 我有一个类UserComplete,它有GetAll和Equals方法,还有一些方法包括一个接受对象数组的构造函数。UserComplete继承自用户。用户类包括GetRows和Equals方法 平等没有什么特别的: Public Overrides Function Equals(obj As Object) As Boolean If Not MyBase.E
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是一个具有一个值的(整数)列表
如果你期待这种行为,为什么?
如果没有,你能解释一下它为什么会发生以及如何修复吗?好的,我有一些信息可以作为答案。然而,如果有人能为社区解释这种情况的“原因”,我会将其作为答案 我取消了一些并行性,我不得不暂时(或永久地)帮助调试它,这取决于我是否决定这个列表将扩展得更多。我发现Equals方法在下面的调用堆栈中
Sessions(u.Key) = DateTime.Now
其中Sessions是一个字典(用户、日期时间)
因此,简单的答案是,当为字典项System.Collections.Generic library赋值时,对字典中每个键的调用都相等。好的,我有一些信息可以作为答案。然而,如果有人能为社区解释这种情况的“原因”,我会将其作为答案 我取消了一些并行性,我不得不暂时(或永久地)帮助调试它,这取决于我是否决定这个列表将扩展得更多。我发现Equals方法在下面的调用堆栈中
Sessions(u.Key) = DateTime.Now
其中Sessions是一个字典(用户、日期时间)
因此,简单的答案是,当为字典项分配值时,System.Collections.Generic library在字典中的每个键上调用相等