1

演算子オーバーロードの書き方がわかりません。助けてください!

私は次のクラスを持っています:

public class Nodegrid<N> where N : INode
{

}

Nodegrid 関数内で、次のようなものを記述できるようにしたい

N n1;
N n2;
//...
if (n1 == n2)
//...

しかし、N の == 演算子のオーバーロードを記述する方法がわかりません。INode を次のようにオーバーロードしてみました

public static bool operator ==(INode n1, INode n2)
{
    return (n1.X == n2.X && n1.Y == n2.Y);
}

しかし、これでは十分ではありませんでした。

N 自体もオーバーロードしようとしましたが、N ではなく Nodegrid をオーバーロードすることを期待していたため、コンパイラ エラーが発生しました。

これが可能な場合はコードを提供してください。そうでない場合は、回避策を提案してください!

ありがとうハイストロム


アップデート

今のところ、演算子のオーバーロードを使用してこれを実行できないことに基づいて、次の回避策を実装しました。

public static class NodeExts
{
    public static bool Equals(this INode n1, INode n2)
    {
        return (n1.X == n2.X && n1.Y == n2.Y);
    }
}
4

1 に答える 1