= vb.net中的运算符

时间:2013-03-03 18:54:36

标签: .net vb.net graph operator-overloading

我正在编写图形程序,我需要检查边缘的末端节点是否等于节点

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

edgeshashsetedge.endNode = nedge.start = n下的错误显示为

  

运算符'='未定义类型'node'和'node'。

我是否需要重载Equals方法?如果是这样,我是否也不需要重载我不想做的GetHashCode方法,或者是否有一种更容易的方法来做到这一点我错过了?

2 个答案:

答案 0 :(得分:1)

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

If ((edge.endNode Is n)

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

答案 1 :(得分:0)

我的猜测是你必须重载Equals方法。关于.NET中的相等覆盖的This article详细说明了这是如何完成的。希望这会有所帮助。