-1

我正在写一个图程序,有一个地方需要检查一条边的结束节点是否等于一个节点

Public Function isAdjacent(ByRef n As node) As Boolean
  For Each edge In edges
    If ((edge.endNode = n) Or ((Not edge.isDirected) AndAlso edge.startNode = n)) Then
      Return True
    End If
  Next
  Return False
End Function

edges是一个哈希集。下面显示了一个错误edge.endNode = nedge.start = n上面写着

运算符 '=' 没有为类型 'node' 和 'node' 定义。

我需要重载Equals方法吗?如果是这样,我是否也不需要重载我不想做的 GetHashCode 方法,或者有没有更简单的方法可以做到这一点?

4

2 回答 2

1

如果要检查引用相等性,请改用Is关键字。

If ((edge.endNode Is n)

如果不是,您需要覆盖Equals(我强烈建议您也覆盖GetHashCode

于 2013-03-03T19:07:23.113 回答
0

我的猜测是您将不得不重载 Equals 方法。这篇关于 .NET 中的相等覆盖的文章详细解释了这是如何完成的。希望这可以帮助。

于 2013-03-03T18:59:42.553 回答