public override bool Equals(object obj)
{
var c = obj as myObj;
if (c == null) return false;
return this.Id.Equals(c.Id)
&& this.Email.Equals(c.Email)
&& this.code.Equals(c.code)
&& (this.myVal == null) ? true : (this.myVal.Equals(c.myVal))
}
如图所示,此方法应返回布尔值。当“this.myVal”中的值为null时,我只想返回true(我正在上面做)。相反,我得到了一个 在检查this.myVal时导致“对象引用未设置为对象的实例”。此错误表明C#编译器不关心我的“null”检查?为什么要抱怨空引用?
答案 0 :(得分:8)
此问题是由操作顺序引起的。你期待这个:
x && y && z && (foo == null ? true : foo.Whatever())
但你真正得到的是:
(x && y && z && foo == null) ? true : foo.Whatever()
将三元运算符放在括号内,以确保它以您期望的方式执行。