我无法弄清楚如何编写运算符重载。请帮忙!
我有以下课程:
public class Nodegrid<N> where N : INode
{
}
在Nodegrid函数中,我希望能够编写像
这样的东西N n1;
N n2;
//...
if (n1 == n2)
//...
但我无法弄清楚如何为N编写==运算符重载。我尝试用
重载INodepublic static bool operator ==(INode n1, INode n2)
{
return (n1.X == n2.X && n1.Y == n2.Y);
}
但这还不够。
我也试过重载N本身,但是我遇到编译错误,因为它期望我重载Nodegrid,而不是N.
如果可以,请提供代码,如果没有,请提出解决方法!
由于 Haighstrom
更新
目前我已经实现了以下解决方法,但是使用运算符重载无法实现:
public static class NodeExts
{
public static bool Equals(this INode n1, INode n2)
{
return (n1.X == n2.X && n1.Y == n2.Y);
}
}
答案 0 :(得分:0)
编辑:这并没有解决他的问题,正在快速阅读问题。
这应该可以解决问题:
public static bool operator ==(Nodegrid<N> n1, Nodegrid<N> n2)
{
return (n1.X == n2.X && n1.Y == n2.Y);
}