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))
}
Run Code Online (Sandbox Code Playgroud)
如图所示的这个方法应该返回一个布尔值.当"this.myVal"中的值为null时,我只想返回true(我正在上面做).相反,我得到一个"对象引用未设置为对象的实例"在检查this.myVal时导致.此错误表明C#编译器不关心我的"null"检查?为什么要抱怨空引用?
此问题是由操作顺序引起的.你期待这个:
x && y && z && (foo == null ? true : foo.Whatever())
Run Code Online (Sandbox Code Playgroud)
但你真正得到的是:
(x && y && z && foo == null) ? true : foo.Whatever()
Run Code Online (Sandbox Code Playgroud)
将三元运算符放在括号内,以确保它以您期望的方式执行.
| 归档时间: |
|
| 查看次数: |
192 次 |
| 最近记录: |