所以,现在我的代码有这样的东西:
if(DateA <= utcNow || (DateA == null && DateB <= utcNow)) doSomething();
我现在想做这样的事情:
if(!InitialExpression) continue;
AFAIK,如果A || B
,则否定为!A && !B
。但这不起作用:if(DateA > utcNow && (DateA != null || DateB > utcNow)) continue;
。当DateA = null
和DateB > utcNow
时,它应该落入continue,但它没有。
编辑:
我的错误是假设DateA <= utcNow
的对立面是DateA > utcNow
。但它是DateA == null || DateA > utcNow
ELSE
语句
if(DateA <= utcNow || (DateA == null && DateB <= utcNow))
{doSomething()
}else{
dpSomethingElse();
- 选项2-在运算符中使用
!
if(!(DateA <= utcNow || (DateA == null && DateB <= utcNow))) doSomethingElse();
- 选项3-否定-DataA不为null的条件需要先执行。缺少一些上下文,但假设您希望通过确保在DateA大于utcNow时优先选择DateA来否定表达式,否则请检查DateB是否大于utcNow
if((DateA != null && DateA > utcNow) || DateB > utcNow) doSomethingElse()
与DateA <= utcNow || (DateA == null && DateB <= utcNow)
相反的是
(DateA == null || DateA > utcNow) && (DateA != null || DateB == null || DateB > utcNow)
你的逻辑在Felipe上很好。只是你忽略了一个小方面。<=
的否定不仅是>
,它还包括一个NULL
值。必须将这两个条件加上OR
运算符。这应该行得通。
查看以下更新声明:
(DateA == null || DateA > utcNow) && (DateA != null || DateB == null || DateB > utcNow)