如何为类的实例定义操作符==
?我试过这样做:
public bool operator == (Vector anotherVector)
{
return this.CompareTo(anotherVector) == 1 ;
}
但上面写着:
期望过载一元运算符
发布于 2013-12-17 09:14:42
您需要将该方法标记为static
,还必须实现不相等的!=
。
public static bool operator ==(Vector currentVector,Vector anotherVector)
{
return currentVector.CompareTo(anotherVector) == 1 ;
}
您必须为两个对象实现==
。
对于!=
和
public static bool operator !=(Vector currentVector,Vector anotherVector)
{
return !(currentVector.CompareTo(anotherVector) == 1) ;
}
重载的操作符==实现不应引发异常。任何重载操作符==的类型也应该重载操作符!=。
发布于 2013-12-17 09:14:58
C++允许将操作符定义为实例成员函数,以便左操作数成为this
指针,与之不同的是,C#操作符重载总是作为静态成员函数进行的。
不可能有this
指针,而且两个操作数都是显式参数。
public static bool operator==(Vector left, Vector right)
{
return left.CompareTo(right) == 1;
}
(虽然这在语义上似乎不正确,但通常CompareTo
返回零作为等效)
发布于 2013-12-17 09:33:17
我完全同意哈比卜的回答-也同意.只是别忘了处理空子。
public static bool operator ==(Vector left, Vector right)
{
if ((object)left == null)
return (object)left == null;
if ((object)right == null)
return false;
return ...;
}
太大了,不能作为他的评论发表。希望这能有所帮助。
https://stackoverflow.com/questions/20640487
复制