C# 复杂的if语句永远不会执行
我有一个很长的if语句,用于检查多个内容。不过,它似乎从未执行过花括号中的代码 它正在检查两个对象 “currentEngineObject”是数据库中存在的对象 “engineList”是传递到此方法的对象 因此,我试图检查以确保SizeId不是空的,并且两个对象都有一个值 如果它们都有值,但不是相同的值,我想将engineList的“SizeId”设置为“currentEngineObject”中的“SizeId”值 但即使有测试数据,它也永远无法通过我的大型C# 复杂的if语句永远不会执行,c#,C#,我有一个很长的if语句,用于检查多个内容。不过,它似乎从未执行过花括号中的代码 它正在检查两个对象 “currentEngineObject”是数据库中存在的对象 “engineList”是传递到此方法的对象 因此,我试图检查以确保SizeId不是空的,并且两个对象都有一个值 如果它们都有值,但不是相同的值,我想将engineList的“SizeId”设置为“currentEngineObject”中的“SizeId”值 但即使有测试数据,它也永远无法通过我的大型if语句 所以我想知道我的逻辑是
if
语句
所以我想知道我的逻辑是否有问题?比如我应该用“或”而不是“和”
这是我的if
块:
if ((currentEngineObject.SizeId.HasValue && currentEngineObject.SizeId.Value != Guid.Empty)
&& (engineList.SizeId.HasValue && engineList.SizeId.Value != Guid.Empty)
&& (currentEngineObject.SizeId.Value != engineList.SizeId.Value))
{
engineList.SizeId = currentEngineObject.SizeId.Value;
}
谢谢 试试这个:
if ((currentEngineObject.SizeId.HasValue && currentEngineObject.SizeId.Value != Guid.Empty)
&& (engineList.SizeId.HasValue && engineList.SizeId.Value != Guid.Empty)
&& !currentEngineObject.SizeId.Equals( engineList.SizeId)) ////Use equals
{
engineList.SizeId = currentEngineObject.SizeId;
}
您可以使用
GetValueOrDefault
方法代替HasValue
/Value
。并通过debugger@Pavel甚至是?。
/?
运算符我个人会使用如果(currentEngineObject.SizeId.GetValueOrDefault()!=默认值)
您的条件似乎是正确的(但可以简化为@PavelAnikhouski和@CaiusJard),您可以设置断点并检查数据吗?顺便说一句,只有&&
你不需要括号<代码>a&&b&&c&&d==(a&&b)&&&c&&d)即使有测试数据也意味着什么?我想知道是否有问题,是否有单元测试?GUID是一个结构,而不是一个类