-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 = nに表示され、edge.start = nそれは言う

演算子「=」は、タイプ「ノード」および「ノード」に対して定義されていません。

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 に答える