【发布时间】:2016-01-20 15:58:24
【问题描述】:
我在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 进行比较。我不确定,但我想比较本身会再次调用重载函数。然后我们再次回到那条线,它调用自己等等。一种无限递归。
但我们都知道这不会发生。在我看来,这意味着与null 进行比较不会调用等式重载。那么真正发生了什么?与null 比较如何工作?
【问题讨论】:
-
旁注:如果 both
lhs和rhs都是null怎么办? -
那是因为
lhs == null不是两者都是MyClass的对象 -
附带说明,这是@EricLippert 关于如何正确实现运算符重载的一个很好的例子:stackoverflow.com/a/19300732/870604
-
@M.kazemAkhgary 这是有效的代码吗?铸造
null?那是东西。不过,它会有用吗?
标签: c# null comparison operator-overloading equality