为了账号安全,请及时绑定邮箱和手机立即绑定

如何在没有无限递归的'=='运算符重载中检查空值?

如何在没有无限递归的'=='运算符重载中检查空值?

ibeautiful 2019-08-09 10:08:39
如何在没有无限递归的'=='运算符重载中检查空值?以下将导致==运算符重载方法的无限递归    Foo foo1 = null;     Foo foo2 = new Foo();     Assert.IsFalse(foo1 == foo2);     public static bool operator ==(Foo foo1, Foo foo2) {         if (foo1 == null) return foo2 == null;         return foo1.Equals(foo2);     }我如何检查空值?
查看完整描述

3 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

用途ReferenceEquals

Foo foo1 = null;Foo foo2 = new Foo();Assert.IsFalse(foo1 == foo2);public static bool operator ==(Foo foo1, Foo foo2) {
    if (object.ReferenceEquals(null, foo1))
        return object.ReferenceEquals(null, foo2);
    return foo1.Equals(foo2);}


查看完整回答
反对 回复 2019-08-09
?
慕仙森

TA贡献1827条经验 获得超7个赞

在重载方法中转换为对象:

public static bool operator ==(Foo foo1, Foo foo2) {
    if ((object) foo1 == null) return (object) foo2 == null;
    return foo1.Equals(foo2);}


查看完整回答
反对 回复 2019-08-09
  • 3 回答
  • 0 关注
  • 437 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信