Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 为什么在解析方法后调用Equals?_Vb.net_Overriding_Equals Operator - Fatal编程技术网

Vb.net 为什么在解析方法后调用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

我不知道调用Equals方法的是什么,因为当遇到断点时,没有调用堆栈(Equals本身和[External Code]除外)

我有一个类UserComplete,它有GetAll和Equals方法,还有一些方法包括一个接受对象数组的构造函数。UserComplete继承自用户。用户类包括GetRows和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是一个具有一个值的(整数)列表

如果你期待这种行为,为什么?
如果没有,你能解释一下它为什么会发生以及如何修复吗?

好的,我有一些信息可以作为答案。然而,如果有人能为社区解释这种情况的“原因”,我会将其作为答案

我取消了一些并行性,我不得不暂时(或永久地)帮助调试它,这取决于我是否决定这个列表将扩展得更多。我发现Equals方法在下面的调用堆栈中

Sessions(u.Key) = DateTime.Now
其中Sessions是一个字典(用户、日期时间)


因此,简单的答案是,当为字典项System.Collections.Generic library赋值时,对字典中每个键的调用都相等。

好的,我有一些信息可以作为答案。然而,如果有人能为社区解释这种情况的“原因”,我会将其作为答案

我取消了一些并行性,我不得不暂时(或永久地)帮助调试它,这取决于我是否决定这个列表将扩展得更多。我发现Equals方法在下面的调用堆栈中

Sessions(u.Key) = DateTime.Now
其中Sessions是一个字典(用户、日期时间)

因此,简单的答案是,当为字典项分配值时,System.Collections.Generic library在字典中的每个键上调用相等