【发布时间】:2013-11-02 15:52:19
【问题描述】:
我不知道如何编写运算符重载。请帮忙!
我有以下课程:
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。
如果可以,请提供代码,如果不行,请提出解决方法!
谢谢 黑格斯特罗姆
更新
目前我已经实现了以下解决方法,因为这是使用运算符重载无法完成的:
public static class NodeExts
{
public static bool Equals(this INode n1, INode n2)
{
return (n1.X == n2.X && n1.Y == n2.Y);
}
}
【问题讨论】:
-
您可以发布自己问题的答案,您只需等待两天即可接受。如果您发现自己的问题,那么发布您自己的答案并接受它并没有错,它可能会帮助几个月或几年后访问该网站的人与您有同样的问题(并且它不会混乱每隔几周就会自动提升一个问题的首页)。
-
我们确定这不能通过运算符重载来完成吗?我希望有人可能有办法做到这一点。如果没有,我会写下并接受我自己的答案。
-
这就是它让你等待两天才让你接受的原因之一,有人可能会发布一个使用重载的解决方案(个人如果我发布了一个答案,那就是只做扩展方法您已经发布的解决方案)。