1

我不知道如何编写我的运算符重载。请帮忙!

我有以下课程:

public class Nodegrid<N> where N : INode
{

}

在 Nodegrid 函数中,我希望能够编写类似的东西

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

但我不知道如何为 N 编写 == 运算符重载。我尝试使用

public 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);
    }
}
4

1 回答 1

0

编辑:这并不能解决他的问题,正在快速阅读问题。


这应该可以解决问题:

public static bool operator ==(Nodegrid<N> n1, Nodegrid<N> n2)
{
    return (n1.X == n2.X && n1.Y == n2.Y);
}
于 2013-11-02T15:54:07.100 回答