在對兩個值執行& &操作時,應優先考慮以下兩項中的哪一項。&&在.NET中操作
if (!StartTime.Equals(DateTime.MinValue) &&
!CreationTime.Equals(DateTime.MinValue))
或者
if (!(StartTime.Equals(DateTime.MinValue) && CreationTime.Equals(DateTime.MinValue))
兩者有什麼區別?
在對兩個值執行& &操作時,應優先考慮以下兩項中的哪一項。&&在.NET中操作
if (!StartTime.Equals(DateTime.MinValue) &&
!CreationTime.Equals(DateTime.MinValue))
或者
if (!(StartTime.Equals(DateTime.MinValue) && CreationTime.Equals(DateTime.MinValue))
兩者有什麼區別?
我個人使用前者,我覺得更容易閱讀,如果儘可能多的信息可能是接近我需要儘可能的地步。
例如,剛纔我想知道你的問題是將表達式放在兩行還是一行上比較好,直到我注意到關於不是和括號的部分。
也就是說,只要它們的含義相同,您的表達式不會。
即。
if (!a && !b)
是不一樣的:
if (!(a && b))
相反:
if (!(a || b))
是的,明白了。非常感謝。 – Ram 2010-04-26 10:52:07
嗯,這取決於你想要的。他們都做不同的事情,並且在給定的背景下可能是正確的。
第一個更可讀,可讀性是這裏最重要的東西。
第二個實際上是否與第一個陳述相同?它不應該是||嗎?
對於只有格式化,我prefere:
if(MyFirstExtremlyLongExpressionWhichBarelyFitsIntoALine
&& MySecondExtremlyLongExpressionWhichBarelyFitsIntoALine
&& MyThirdExtremlyLongExpressionWhichBarelyFitsIntoALine
) {
// ...
}
但如果表達式是真的漫長而完備,你應該定義模特porary變量,以提高可讀性:
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
看到http://en.wikipedia.org/wiki/De_Morgan%27s_laws – 2010-04-26 10:32:07