演算子オーバーロードの書き方がわかりません。助けてください!
私は次のクラスを持っています:
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);
}
}