在对两个值进行 && 操作时,应该首选以下两个中的哪一个。
if (!StartTime.Equals(DateTime.MinValue) &&
!CreationTime.Equals(DateTime.MinValue))
或者
if (!(StartTime.Equals(DateTime.MinValue) && CreationTime.Equals(DateTime.MinValue))
两者有什么区别?
在对两个值进行 && 操作时,应该首选以下两个中的哪一个。
if (!StartTime.Equals(DateTime.MinValue) &&
!CreationTime.Equals(DateTime.MinValue))
或者
if (!(StartTime.Equals(DateTime.MinValue) && CreationTime.Equals(DateTime.MinValue))
两者有什么区别?
(Not A) AND (Not B)
不等于_
Not (A And B)
我个人使用前者,如果尽可能多的信息尽可能接近我需要的点,我发现它更容易阅读。
例如,刚才我想知道你的问题是把表达式放在两行还是一行更好,直到我注意到关于非和括号的部分。
也就是说,只要它们的含义相同,而您的表达方式则不然。
IE。
if (!a && !b)
不一样:
if (!(a && b))
相当:
if (!(a || b))
仅关于格式,我更喜欢:
if(MyFirstExtremlyLongExpressionWhichBarelyFitsIntoALine
&& MySecondExtremlyLongExpressionWhichBarelyFitsIntoALine
&& MyThirdExtremlyLongExpressionWhichBarelyFitsIntoALine
) {
// ...
}
但是如果表达式真的很长而且很完整,你应该定义临时变量来增强可读性:
bool condition1 = MyFirstExtremlyLongExpressionWhichBarelyFitsIntoALine;
bool condition2 = MySecondExtremlyLongExpressionWhichBarelyFitsIntoALine;
bool condition3 = MyThirdExtremlyLongExpressionWhichBarelyFitsIntoALine;
if(condition1 && condition2 && condition3) {
// ...
}
如果您正在执行更复杂的布尔表达式,后者还阐明了您的意图:
if((!condition1 && !condition2) && condition3) {
// ...
}
嗯,这取决于你想要什么。他们都做不同的事情,并且在给定的上下文中可能是正确的。
如果您输入值,您将看到
(!1 && !1) == (0 && 0) == 0 (!1 && !0) == (0 && 1) == 0
!(1 && 1) == !1 == 0 !(1 && 0) == !0 == 1
第一个更具可读性,可读性是这里最重要的事情。
第二个实际上等同于第一个陈述吗?不应该是||吗?