以下内容会导致"=="运算符重载方法出现无限递归。
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);
}
如何检查 null 值?
Assert.IsFalse(foo2 == foo1);
。 - FILfoo1.x == foo2.x && foo1.y == foo2.y
的情况下让foo1 == foo2
,那么foo1.Equals(foo2)
是什么意思?这是否忽略了foo1 != null
但foo2 == null
的情况? - Danielif (foo1 is null) return foo2 is null;
- Rémi Gaudin