1. ホーム
  2. c#

[解決済み】|と||や演算子の違いは何ですか?

2022-03-26 12:25:23

質問

私はいつも || (C#でもPHPでも、OR式では(2本のパイプ)。時折、1本のパイプが使われているのを見かけます。 | . この2つの使い方はどう違うのでしょうか?また、この2つの使い方は互換性があるのでしょうか?

どのように解決するのですか?

と同じように &&& 演算子の場合、double 演算子は "short-circuit" 演算子である。

例えば

if(condition1 || condition2 || condition3)

条件1が真の場合、条件2と3はチェックされない。

if(condition1 | condition2 | condition3)

これは、1がすでに真であっても、2と3の条件をチェックします。条件は非常に高価な関数であるため、これを使用することでパフォーマンスを向上させることができます。

一つ大きな注意点があり、NullReferencesやそれに類する問題です。例えば

if(class != null && class.someVar < 20)

classがNULLの場合、if文は class != null が偽であることを示します。もし、& だけを使った場合は class.someVar と表示されます。 NullReferenceException . Or-Operatorの場合、何か悪いことを引き起こす可能性は低いので、それほど罠ではないかもしれませんが、覚えておくとよいでしょう。

を使う人はいないでしょう。 & または | ただし、各条件が必ず実行されなければならない関数であるような設計の場合は別です。デザイン臭く聞こえるかもしれませんが、時には(稀に)それがきれいな方法であることもあります。その & 演算子は、これら 3 つの関数を実行し、そのうちの 1 つが false を返したら else ブロックを実行します。 | は、どれもfalseを返さなかった場合のみelseブロックを実行します。

2つ目の用途として |& 演算子を使用します。 ビット単位の演算 .