c# – 如何重载等于运算符==真的有用吗?
我在MyClass中有这段代码:
public static bool operator ==(MyClass lhs,MyClass rhs) { if (lhs == null || rhs == null) return false; // Other operations to check for equality } 在代码的第一行,我将lhs和rhs比较为null.我不确定,但我想比较本身会再次调用重载函数.然后我们又回到那条线上,它会调用自己,等等.无限递归的排序. 解决方法
编辑
我纠正了.它会递归调用==运算符(至少在LinqPad 4.5中),而不是绑定到object.==.有三种方法可以解决这个问题: >如果你真的想要值相等语义,那么重载等于.
No – null不是MyClass,因此调用使用==的默认含义,即引用相等. 还要注意,guidelines for overloading (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |