涉及泛型和接口的等价运算符重载

时间:2013-11-02 15:52:19

标签: c# operator-overloading

我无法弄清楚如何编写运算符重载。请帮忙!

我有以下课程:

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本身,但是我遇到编译错误,因为它期望我重载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);
    }
}

1 个答案:

答案 0 :(得分:0)

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


这应该可以解决问题:

public static bool operator ==(Nodegrid<N> n1, Nodegrid<N> n2)
{
    return (n1.X == n2.X && n1.Y == n2.Y);
}