如何在没有无限递归的'=='运算符重载中检查空值?以下将导致==运算符重载方法的无限递归 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 关注
- 469 浏览
添加回答
举报
0/150
提交
取消
