如何在没有无限递归的'=='运算符重载中检查空值?以下将导致==运算符重载方法的无限递归 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);}

慕仙森
TA贡献1827条经验 获得超8个赞
在重载方法中转换为对象:
public static bool operator ==(Foo foo1, Foo foo2) { if ((object) foo1 == null) return (object) foo2 == null; return foo1.Equals(foo2);}
- 3 回答
- 0 关注
- 440 浏览
添加回答
举报
0/150
提交
取消