以下将导致==运算符重载方法的无限递归
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);
}
如何检查空值?
最佳答案
使用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);
}
关于c# - 如何在没有无限递归的情况下检查 '=='运算符重载中的空值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/73713/