4

2つの値に対して&&操作を実行する場合は、次の2つのうちどちらを優先する必要がありますか。

 if (!StartTime.Equals(DateTime.MinValue) &&
    !CreationTime.Equals(DateTime.MinValue))

または

     if (!(StartTime.Equals(DateTime.MinValue) && CreationTime.Equals(DateTime.MinValue))

2つの違いは何ですか?

4

6 に答える 6

13
(Not A)  AND  (Not B)

と等しくない

Not (A And B)
于 2010-04-26T10:28:57.280 に答える
5

個人的には前者を使っていますが、できるだけ多くの情報が必要なところに近い方が読みやすいと思います。

たとえば、今、あなたの質問は、notと括弧の部分に気付くまで、式を2行にするのが良いのか1行にするのが良いのか疑問に思っていました。

つまり、それらが同じ意味であるという条件で、あなたの表現はそうではありません。

すなわち。

if (!a && !b)

と同じではありません:

if (!(a && b))

それよりも:

if (!(a || b))
于 2010-04-26T10:29:30.220 に答える
1

まあ、それはあなたが望むものに依存します。それらは両方とも異なることを行い、どちらかが与えられたコンテキストで正しいかもしれません。

于 2010-04-26T10:28:08.183 に答える
1

フォーマットのみに関して、私は好みます:

if(MyFirstExtremlyLongExpressionWhichBarelyFitsIntoALine
  && MySecondExtremlyLongExpressionWhichBarelyFitsIntoALine
  && MyThirdExtremlyLongExpressionWhichBarelyFitsIntoALine
) {
  // ...
}

ただし、式が非常に長くて複雑な場合は、読みやすさを向上させるために一時変数を定義する必要があります。

bool condition1 = MyFirstExtremlyLongExpressionWhichBarelyFitsIntoALine;
bool condition2 = MySecondExtremlyLongExpressionWhichBarelyFitsIntoALine;
bool condition3 = MyThirdExtremlyLongExpressionWhichBarelyFitsIntoALine;

if(condition1 && condition2 && condition3) {
  // ...
}

より複雑なブール式を実行している場合は、後者も意図を明確にします。

if((!condition1 && !condition2) && condition3) {
  // ...
}
于 2010-04-26T10:47:52.493 に答える
0

最初のものははるかに読みやすく、読みやすさはここで最も重要なことです。

2番目のものは実際に最初のステートメントと同等ですか?||ではないでしょうか?

于 2010-04-26T10:28:32.353 に答える
0

値を入力すると、次のように表示されます。

(!1 &&!1)==(0 && 0)== 0(!1 &&!0)==(0 && 1)== 0

!(1 && 1)==!1 == 0!(1 && 0)==!0 == 1

于 2010-04-26T10:49:21.133 に答える