任何人都可以提供任何想法,为什么我的空检查评估不正确吗?
还应该指出,如果我不为空,则评估是正确的。我不确定还有什么相关内容,但让我知道我需要提供的其他细节。
foreach (var item in selectedItems)
{
var i = inspectionItems.Keys.SingleOrDefault(x => x.InspectionItemId == item.InspectionItemId);
if (i != null)
{
// Process i
}
else
{
// create
}
}
答案 0 :(得分:6)
我的猜测是你重载==
运算符。 Object.Equals(i, null)
的结果可以证实这一点。
如果您使==
运算符超载,则可能是您的逻辑错误地处理null
情况。
答案 1 :(得分:0)
实现这一目标的一种[狡猾]方式是: -
public enum Cheat
{
@null = 0,
foo = 1,
bar = 2
}
如果您将Cheat.@null
分配给i
,则会获得您显示的观看值。
i
的类型是什么?它在调试器中显示为null
,或者您在该类中执行了其他可能导致==
失败的内容。